Когда и как часто вызывается метод onPrepareOptionsMenu() для ActionBar?

#android #menu #android-actionbar

#Android #меню #android-actionbar

Вопрос:

Понятно Activities , что метод вызывается непосредственно перед отображением меню. Но как насчет ActionBar того, когда он всегда отображается? Как вызвать его для динамического обновления menuItems ?

Комментарии:

1. Вы можете использовать метод onPrepareOptionsMenu() для эффективного включения / отключения элементов или иного динамического изменения содержимого.

Ответ №1:

Используйте invalidateOptionsMenu() для запуска метода onPrepareOptionMenu(), как предложено 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.

Комментарии:

1. Если вы используете ActionBarSherlock, вы можете использовать метод activity: supportInvalidateOptionsMenu(); Если вы находитесь во фрагменте, вызовите getActivity().supportInvalidateOptionsMenu(); вместо этого

Ответ №2:

Обратите внимание, что если ваша минимальная версия sdk меньше, чем Honeycomb (он же Android 3.0, он же api 11-го уровня), и вы используете ActionBarActivity, вы можете вызвать supportInvalidateOptionsMenu(), который является версией библиотеки поддержки invalidateOptionsMenu() .

Если ваше меню изменяется на основе входящего намерения в onCreate(), вы можете просто выполнять обновления в onPrepareOptionMenu(), если вы динамически изменяете меню позже в жизненном цикле activities, вам придется вызывать invalideOptionsMenu или supportInvalidateOptionsMenu в зависимости от вашей минимальной и целевой версий sdk.