À l'aide de onPrepareOptionsMenu au lieu de onCreateOptionsMenu du Fragment

J'ai eu un problème de mise en place d'un fragment d'éléments de menu dans le ActionBar et j'ai trouvé un moyen de le résoudre, mais je ne comprends pas pourquoi cela a fonctionné.

J'ai voulu changer la visibilité dans un élément de menu juste après que j'ai gonflé à partir d'un menu fichier xml dans onCreateOptionsMenu méthode. Le code semble fonctionner très bien, mais il n'y a pas d'effet visible. J'ai résolu le problème en gonflant le menu en onCreateOptionsMenu méthode, mais en changeant la visibilité de celle-ci dans onPrepareOptionsMenu méthode.

Ce que je veux savoir, c'est pourquoi la modification de la visibilité dans onCreateOptionsMenu ne fonctionne pas.

Ce que je peux faire dans onPrepareOptionsMenu que je ne peux pas faire dans onCreateOptionsMenu?

Est-il un modèle à suivre ici?

Merci!

Voici le code, juste au cas où:

public class MyFragment extends Fragment {

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.my_menu, menu);

        //This does not work, compiles and runs fine, but has no visible effect
        MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
        someMenuItem.setVisible(false);
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);

        //This does work
        MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
        someMenuItem.setVisible(false);
    }
}
Je ne suis pas sûr, mais le documentation dit: "...pour mettre À jour le menu à chaque fois qu'il est affiché, voir onPrepareOptionsMenu(Menu)."
Merci pour le commentaire! La chose ici est que je n'est pas nécessaire de "mettre à jour à chaque fois qu'il est affiché" (il s'affiche tout le temps, il n'y a pas submenues), je veux juste configurer le menu, seulement une fois, lors de la création/gonflé et c'est tout. Tout droit, il peut sembler être la même chose dans ma situation, mais le but de ma question est de comprendre pourquoi ça fonctionne comme ça. Pourquoi dois-je avoir pour "reconfigurer" le menu à chaque fois qu'il s'affiche quand je peux le faire une seule fois, lorsque je le créer?
Je comprends et accepte que devrait être une option. Cependant, à mon avis, je pense que c'est la façon dont Android fonctionne. Dans certains cas, vous pouvez coder en dur le menu des propriétés avec des attributs xml.
avez-vous comprendre ? merci
vous devez accepter la réponse de christian

OriginalL'auteur Gerardo Contijoch | 2012-07-07