Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Используйте 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.

Ответ 2

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

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