Когда и как часто вызывается метод onPrepareOptionsMenu () для ActionBar? - PullRequest
28 голосов
/ 05 октября 2011

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

Ответы [ 2 ]

54 голосов
/ 05 октября 2011

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

0 голосов
/ 23 июля 2014

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

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

...