Ответ 1
Да. Для этого вам необходимо использовать:
public boolean onPrepareOptionsMenu (Menu menu)
Этот код будет выполняться каждый раз перед отображением меню параметров. Подробнее здесь.
Я заметил, что
@Override
public boolean onCreateOptionsMenu(Menu menu) {
получает только один раз. Мне нужно, чтобы это вызывалось каждый раз, когда отображается меню, потому что я добавляю/удаляю элементы из меню в зависимости от состояния приложения.
Это возможно?
Да. Для этого вам необходимо использовать:
public boolean onPrepareOptionsMenu (Menu menu)
Этот код будет выполняться каждый раз перед отображением меню параметров. Подробнее здесь.
Если вы хотите, чтобы меню менялось каждый раз, когда оно было открыто, что-то еще, что нужно учитывать, зависит от версии Android sdk.
Это то, что говорит разработчик:
Если вы хотите изменить меню опций на основе событий, которые происходят во время жизненного цикла активности, вы можете сделать это в методе onPrepareOptionsMenu(). Этот метод передает вам объект Menu, поскольку он существует, поэтому вы можете его изменить, например, добавить, удалить или отключить элементы. (Фрагменты также предоставляют обратный вызов onPrepareOptionsMenu().)
В Android 2.3.x и ниже система вызывает onPrepareOptionsMenu() каждый раз, когда пользователь открывает меню опций (нажимает кнопку "Меню" ).
В Android 3.0 и выше меню опций считается всегда открытым, когда пункты меню представлены в панели действий. Когда происходит событие и вы хотите выполнить обновление меню, вы должны вызвать invalidateOptionsMenu(), чтобы запросить, чтобы системный вызов onPrepareOptionsMenu().
Вы хотите, чтобы вы динамически обновляли пункты меню? override onPrepareOptionsMenu()