2010-09-09 5 views
8

Le problème est que la méthode suivante est appelée une fois lorsque la touche Menu est pressée:Comment créer un menu d'options dynamique?

public boolean onCreateOptionsMenu(Menu menu) 

Comment puis-je recréer le menu à une date ultérieure afin de modifier certaines options, désactiver certaines options, etc?

Répondre

22

Remplacer cette onPrepareOptionsMenu (menu Menu)

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     MenuItem item = menu.findItem(R.id.refresh); 

     if (item != null) { 
     item.setVisible (shouldIShowThisItem) 
     } 
} 
+0

Ça a bien fonctionné. Pour que quelqu'un d'autre le fasse, avant de pouvoir changer les éléments du menu onPrepareOptionsMenu, vous devez faire un menu.clear() pour effacer le contenu actuel. – pcm2a

+0

Vous n'avez pas besoin d'effacer le menu si vous modifiez uniquement des éléments existants. Si vous êtes en train de régénérer ou de regonfler un tout nouveau menu, vous voudrez peut-être le faire. – adamp

+0

Je n'ai pas pu modifier les éléments de menu sans les effacer et les recréer. J'ai essayé d'obtenir un élément individuel avec menu.getPositon() mais quand j'ai changé le titre, les changements n'étaient pas reflétés dans le menu. – pcm2a

0
invalidateOptionsMenu(); 

si vous voulez pousser les changements Menu utiliser.

Questions connexes