web-dev-qa-db-fra.com

Quand et à quelle fréquence la méthode onPrepareOptionsMenu () est appelée pour ActionBar?

C'est clair pour Activities - la méthode est appelée juste avant que le menu ne soit affiché. Mais qu'en est-il de ActionBar quand il est toujours affiché ? Comment le déclencher pour qu'il soit mis à jour de manière dynamique à menuItems?

28
Eugene

Utilisez invalidateOptionsMenu () pour déclencher la méthode onPrepareOptionMenu () comme suggéré par document.

On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.

54
PH7

Notez que si votre version de sdk minimale est inférieure à Honeycomb (alias Android 3.0 ou api de niveau 11), et que vous utilisez ActionBarActivity, vous pouvez appeler supportInvalidateOptionsMenu (), qui est la version de la bibliothèque de support invalidateOptionsMenu ().

Si votre menu change en fonction d'une intention entrante dans onCreate (), vous pouvez simplement effectuer les mises à jour dans onPrepareOptionMenu (). Si vous modifiez dynamiquement le menu plus tard dans le cycle de vie des activités, vous devrez appeler invalideOptionsMenu ou supportInvalidateOptionsMenu en fonction de vos versions sdk min et cible.

0
guyland123