web-dev-qa-db-fra.com

Que fait onPrepareOptionsMenu?

Je veux faire Option Menu pour Android, j'ai visité ce site. Dans leur script, j'ai trouvé onPrepareOptionsMenu, j'essaie de compiler et d'exécuter à l'aide du compilateur Android 2.3.3 avec et sans onPrepareOptionsMenu, les deux fonctionnent, mais je ne voyais aucune différence.

public boolean onCreateOptionsMenu(Menu menu){
//code here
}

public boolean onOptionsItemSelected(MenuItem item){
//code here
}

public boolean onPrepareOptionsMenu(Menu menu){
//code here
}

Quelle est en réalité la méthode onPrepareOptionsMenu faire? Cette méthode est-elle importante? Puis-je simplement supprimer la méthode?


Une addition

Oh, j’entends aussi parler de Action Bar dans Android 3.0, il est dit que Action Bar est le moyen alternatif de make Option Menu, et qu’il utilise onPrepareOptionsMenu. Est-ce correct?

Je vous remercie...

27
Tutompita

Jetez un coup d'oeil dans le API :

Préparez le menu d'options standard de l'écran pour qu'il soit affiché. Ceci s’appelle juste avant que le menu ne s’affiche, à chaque affichage. Vous pouvez utiliser cette méthode pour activer/désactiver efficacement les éléments ou modifier le contenu de manière dynamique.

39
Silox

Si vous souhaitez modifier le menu avant qu'il ne soit affiché à l'utilisateur, vous pouvez mettre du code pour le faire dans onPrepareOptionsMenu. Je l'ai utilisé dynamiquement pour désactiver certaines options de menu dans certaines circonstances. 

Par exemple, quand on peut vouloir désactiver une option de menu, j'avais une application où il y avait un moyen de spécifier une destination. Une de mes options de menu consistait à calculer un itinéraire vers la destination. Cependant, si aucune destination n'était spécifiée, cette option ne s'appliquait pas et j'ai donc utilisé onPrepareOptionsMenu pour désactiver cette option de menu lorsqu'elle n'était pas applicable.

Depuis Android 3.0 et les versions ultérieures, vous trouverez la barre d’action, qui est une barre de menus. Les éléments les plus importants vont dans la barre d’action elle-même, mais il ya un débordement lorsque la barre d’action est insuffisante. On peut spécifier que les éléments de menu doivent toujours être dans le menu de débordement et jamais dans la barre d’action elle-même. Sur certains appareils, le débordement de la barre d'action correspond au bouton de menu permanent de l'appareil, tandis que sur d'autres appareils sans bouton de menu, le menu de débordement est affiché à droite de la barre d'action sous la forme de trois points verticaux.

7
Stochastically

onCreateOptionsMenu est appelée une fois, lorsque votre activité est créée pour la première fois. S'il renvoie false, aucun menu d'options n'est affiché et onPrepareOptionsMenu n'est jamais appelé.

Si onCreateOptionsMenu renvoie true, onPrepareOptionsMenu est également appelé avant que l'activité ne soit affichée et à chaque fois que le menu d'options est invalidé. Utilisez onPrepareOptionsMenu si vous devez activer/désactiver, afficher/masquer ou ajouter/supprimer des éléments après l'avoir créé.

Si votre menu ne change pas, utilisez onCreateOptionsMenu.

1
Steven Spungin