J'essaie de désactiver un groupe de menu avec le code suivant, mais cela ne fonctionne pas, les éléments de menu sont toujours activés. Pouvez-vous me dire ce qui ne va pas s'il vous plaît?
RES / MENU / MENU.XML: P>
public boolean onPrepareOptionsMenu (Menu menu) { menu.setGroupEnabled (R.id.group_1, false); // does not work menu.setGroupVisible (R.id.group_1, false); // does not work either return super.onPrepareOptionsMenu (menu); } public boolean onCreateOptionsMenu (Menu menu) { getMenuInflater ().inflate (R.menu.menu, menu); return true; }
3 Réponses :
Je ne sais pas si vous pouvez utiliser un groupe comme celui-ci, mais essayez ceci (sa valeur d'une photo): EDIT: strong> Votre problème est votre structure de menu et la manière dont vous créez le menu à l'intérieur Vous créez un menu pour le menu parent, pas le menu enfant, donc c'est-à-dire Pourquoi l'appel à OncreateOptionsMenu Code> en raison de menus parent / enfant. p>
setgroupenabled code> et
setgroupvissible code> échoue. Vous devez créer un objet dans
OncreateOptionsMenu code> qui représente l'enfant pour que cet objet soit transmis dans
onprepareOptionsMenu code> et votre code pour fonctionner. P> P>
Je l'ai ajouté (cela n'a rien de spécial).
Pourquoi cette réponse est-elle marquée comme la réponse à la question quand elle ne fonctionne tout simplement pas?
Pourquoi avez-vous mis une réponse qui ne va pas? Ces six premiers avotes doivent être enlevés
Grâce aux informations de User432209, voici la réponse:
menu.findItem (R.id.b).getSubMenu ().setGroupVisible (R.id.group_1, false);
La solution susmentionnée fonctionne bien, mais elle doit être écrite dans OncreateOptionsMenu code>, voici l'exemple de celui-ci:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the menu
inflater.inflate(R.menu.menu, menu);
// Make the menu item visible and enable it.
MenuItem item = menu.findItem(R.id.group_1);
item.setVisible(true);
item.setEnabled(false);
}