Вызовите onCreateOptionsMenu в onPostCreate
Я хочу динамически изменить onCreateOptionsMenu
Предметы. Я исправил свою проблему, и единственное решение - позвонить onCreateOptionsMenu
в onPostCreate
но я не знаю как это назвать. Я уже попробовал мои решения не работает. Это вообще возможно..?
2 ответа
Изменение пунктов меню во время выполнения (из документов)
После системных звонков onCreateOptionsMenu()
, он сохраняет экземпляр Menu
вы заселите и не будете звонить onCreateOptionsMenu()
еще раз, если меню по какой-то причине не будет отменено. Тем не менее, вы должны использовать onCreateOptionsMenu()
только для создания исходного состояния меню, а не для внесения изменений в течение жизненного цикла действия.
Если вы хотите изменить меню параметров на основе событий, происходящих в течение жизненного цикла действия, вы можете сделать это в onPrepareOptionsMenu()
метод. Этот метод передает вам объект Menu в том виде, в котором он существует в данный момент, чтобы вы могли изменить его, например добавить, удалить или отключить элементы. (Фрагменты также обеспечивают onPrepareOptionsMenu()
Перезвоните.)
На Android 2.3.x и ниже системные вызовы onPrepareOptionsMenu()
каждый раз, когда пользователь открывает меню опций (нажимает кнопку меню).
На Android 3.0 и выше, меню параметров всегда открыто, когда элементы меню представлены на панели действий. Когда происходит событие, и вы хотите выполнить обновление меню, вы должны позвонить invalidateOptionsMenu()
запросить, чтобы системный вызов onPrepareOptionsMenu()
,
invalidateOptionsMenu()
был добавлен в API 11, чтобы дать нам возможность принудительно вызывать onCreateOptionsMenu().
НОТА:
В случае ICS и Сота onCreateOptionsMenu()
называется после onCreate()
а также onPostCreate()
в то время как в Gingerbread и более ранних версиях он называется после onCreate()
но прежде onPostCreate()
,
Попробуйте следующее:
public static void refreshMenu(Activity activity)
{
activity.invalidateOptionsMenu();
}