7
votes

Désactiver le groupe de menus Android

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;
}


0 commentaires

3 Réponses :


5
votes

Je ne sais pas si vous pouvez utiliser un groupe comme celui-ci, mais essayez ceci (sa valeur d'une photo): xxx

EDIT: Votre problème est votre structure de menu et la manière dont vous créez le menu à l'intérieur OncreateOptionsMenu en raison de menus parent / enfant.

Vous créez un menu pour le menu parent, pas le menu enfant, donc c'est-à-dire Pourquoi l'appel à setgroupenabled et setgroupvissible échoue. Vous devez créer un objet dans OncreateOptionsMenu qui représente l'enfant pour que cet objet soit transmis dans onprepareOptionsMenu et votre code pour fonctionner.


3 commentaires

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



21
votes

Grâce aux informations de User432209, voici la réponse:

menu.findItem (R.id.b).getSubMenu ().setGroupVisible (R.id.group_1, false);


0 commentaires

1
votes

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);
}


0 commentaires