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

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


person Eugene    schedule 05.10.2011    source источник
comment
Вы можете использовать метод onPrepareOptionsMenu() для эффективного включения/отключения элементов или иного динамического изменения содержимого.   -  person AndroidGeek    schedule 04.09.2014


Ответы (2)


Используйте invalidateOptionsMenu() для запуска метода onPrepareOptionMenu(), как это предлагается в документе.

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.

person PH7    schedule 05.10.2011
comment
Если вы используете ActionBarSherlock, вы можете использовать метод активности: supportInvalidateOptionsMenu(); Если вы находитесь во фрагменте, вызовите getActivity().supportInvalidateOptionsMenu(); вместо - person edrian; 09.04.2014

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

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

person guyland123    schedule 23.07.2014