12
votes

Essayer de masquer et d'afficher les éléments de menu sur la barre d'action

J'ai parcouru les questions sur le débordement de la pile et je ne trouve pas la solution.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case R.id.menu_settings: 
            Log.v("Log:","edit_item pressed");
            return true;
    }
}


0 commentaires

4 Réponses :


19
votes

Ce n'est pas suffisant pour changer la variable code> isdown code>. Vous devez appeler la méthode SetVisible () CODE> à chaque fois que vous souhaitez modifier la visibilité. Cette méthode fait plus que de définir une valeur booléenne, il suffit de changer une valeur booléenne.

Après avoir modifié la valeur code> isdown code> sur false, vous devez appeler invalidateOptionsMenu () qui relancera le menu en appelant onprepareOptionsMenu () code> à nouveau. p>

Essayez ce code pour la création des éléments de menu invisibles: p>

...
isdown = false;
invalidateOptionsMenu();
...


7 commentaires

Oui, je sais que, mais comme je lisais l'ONPREPareOptionsMenu (menu Menu) {est censé tirer à chaque fois qu'un élément de menu est cliqué et cela fonctionnerait. Je ne peux pas définir la visibilité à moins que je n'ai que menu Menu dans la fonction, c'est là que j'ai un problème


Je vois. Publier édité pour couvrir ceci.


Ahhh c'est ce que je cherchais. Je vais essayer si cela fonctionne mal accepte, merci.


Où puis-je ajouter la méthode InvalidateOptionSMenu ()?


N'importe où dans l'activité après avoir changé la valeur de ISDOD sur FALSE


NVM le trouva. Je devais ajouter une suppression de la nouvelle API pour que je pose l'invalidation dans sa propre fonction, il suffit d'augmenter. Merci


InvalidateOptionsMenu (); Nécessite l'API 11. Aussi à masquer / afficher un élément, je ne pense pas que sa bonne option pour invalider le menu d'options entières!



11
votes

Essayez ceci,

menu.findItem(R.id.menu_settings).setVisible(isdown);
menu.findItem(R.id.menu_save).setVisible(isdown);


5 commentaires

J'ai entendu dire que l'onprepareoptionsmenu était censé être mieux, savez-vous quelle est la différence?


ok donc maintenant je peux mettre mon menu.Find article dans n'importe quelle fonction de ma classe?


Oui, trouvez l'élément de menu dans n'importe quel endroit de votre classe et de votre cache-cache ..!, Vérifiez-vous cela?


Je vais essayer si ça marche sera up vote merci beaucoup me donner quelques heures


Tous deux travaillaient mais l'autre réponse en invalidant le menu est plus efficace merci.



0
votes

Essayez ceci dans votre fragmentationActivité

public boolean onPreparePanel(int featureId, View view, Menu menu) {
    if(isLeftMenuOpened()) return false;
    return super.onPreparePanel(featureId, view, menu);
}


0 commentaires

0
votes

J'ai un menu avec deux éléments, d'abord: Enregistrer l'élément, deuxième: Modifier l'élément. Je voulais quand je suis entré pour édition, au début "Save Item" avait été masqué et lorsque je clique sur "Modifier l'élément", "Enregistrer l'élément" a été affiché.

SO: P>

  1. déclarer un article en public li>
  2. Définir la valeur à celui-ci dans OncreateOptionsMenu (menu Menu, MenuLflaater Inflater) Code> Li>
  3. Définir la visibilité à ishaden () code> li>
  4. Puis tout lieu où je voulais, définissez la visibilité sur ISvissible () Code> Li> ol>

    Région publique: p>

    saveItem.setVisible(isVisible());
    


0 commentaires