OnCreateOptionsMenu (меню меню) получает вызов только один раз в течение жизненного цикла действия

Я заметил, что

@Override
public boolean onCreateOptionsMenu(Menu menu) {

получает только один раз. Мне нужно, чтобы это вызывалось каждый раз, когда отображается меню, потому что я добавляю/удаляю элементы из меню в зависимости от состояния приложения.

Это возможно?

Ответы

Ответ 1

Да. Для этого вам необходимо использовать:

public boolean onPrepareOptionsMenu (Menu menu) 

Этот код будет выполняться каждый раз перед отображением меню параметров. Подробнее здесь.

Ответ 2

Если вы хотите, чтобы меню менялось каждый раз, когда оно было открыто, что-то еще, что нужно учитывать, зависит от версии Android sdk.

Это то, что говорит разработчик:

Если вы хотите изменить меню опций на основе событий, которые происходят во время жизненного цикла активности, вы можете сделать это в методе onPrepareOptionsMenu(). Этот метод передает вам объект Menu, поскольку он существует, поэтому вы можете его изменить, например, добавить, удалить или отключить элементы. (Фрагменты также предоставляют обратный вызов onPrepareOptionsMenu().)

В Android 2.3.x и ниже система вызывает onPrepareOptionsMenu() каждый раз, когда пользователь открывает меню опций (нажимает кнопку "Меню" ).

В Android 3.0 и выше меню опций считается всегда открытым, когда пункты меню представлены в панели действий. Когда происходит событие и вы хотите выполнить обновление меню, вы должны вызвать invalidateOptionsMenu(), чтобы запросить, чтобы системный вызов onPrepareOptionsMenu().

Ответ 3

Вы хотите, чтобы вы динамически обновляли пункты меню? override onPrepareOptionsMenu()