Вызовите 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().

invalidateOptionsMenu

НОТА:

В случае ICS и Сота onCreateOptionsMenu() называется после onCreate() а также onPostCreate() в то время как в Gingerbread и более ранних версиях он называется после onCreate() но прежде onPostCreate(),

Попробуйте следующее:

public static void refreshMenu(Activity activity)
{
    activity.invalidateOptionsMenu();
}

Использовать этот,

invalidateOptionsMenu ();

Другие вопросы по тегам