J'ai une barre d'action avec un élément de menu. Comment puis-je masquer/afficher cet élément de menu ?
Voici ce que j'essaie de faire :
MenuItem item = (MenuItem) findViewById(R.id.addAction);
item.setVisible(false);
this.invalidateOptionsMenu();
Obtenez un MenuItem
pointant sur un tel élément, appelez setVisible
dessus pour ajuster sa visibilité et ensuite appelez invalidateOptionsMenu()
sur votre activité pour que le menu de la barre d'action soit ajusté en conséquence.
Mise à jour: Un MenuItem
n'est pas une vue ordinaire qui fait partie de votre mise en page. C'est quelque chose de spécial, de complètement différent. Votre code renvoie null
pour item
et c''est ce qui cause le crash. Ce dont vous avez besoin à la place, c'est de faire :
MenuItem item = menu.findItem(R.id.addAction);
Voici l'ordre dans lequel vous devez appeler :
appelez d'abord invalidateOptionsMenu()
puis dans onCreateOptionsMenu(Menu)
obtenez une référence au MenuItem (en appelant menu.findItem()
) et appelez setVisible()
sur celui-ci
Oui.
invalidateOptionsMenu()
lorsque vous voulez masquer l'option. Ceci appellera onCreateOptionsMenu()
.onCreateOptionsMenu()
, vérifiez le drapeau/condition et affichez ou cachez le
l'afficher ou le masquer de la manière suivante :MenuItem item = menu.findItem(R.id.menu_Done) ;
if (flag/condition)) { item.setVisible(false) ; } else { }
Vous pouvez appeler ça comme ça :
MenuItem item = menu.findItem(R.id.my_item);
item.setVisible(false);
Update:
Assurez-vous que votre code ne renvoie pas null
pour item
ou cela peut faire planter l'application.