0

У меня есть optionsmenu глядя, как это прямо сейчас:Android OptionsMenu, добавлять элементы во время выполнения

enter image description here

позволяет сказать, что если я нажимаю пункт 1, я хочу два новых пункта добавлены в меню глядя как это:

enter image description here

у меня возникли проблемы делают это во время выполнения (в то время как он открыт), так как onCreateOptionsMenu вызывается только один раз и onPrepareOptionsMenu только кажется, будет вызван, когда кнопка MENU телефона является clicke д. Я просто хочу, чтобы он обновился с добавлением новых элементов.

Спасибо за помощь!

+0

Вы хотите обновить меню, пока оно открыто? Пробовали ли вы скрывать и отображать его программным способом (без нажатия кнопки меню), поэтому вызывается onPrepareOptionsMenu? – Sver

+0

Да, я пробовал этот подход с помощью CloseOptionsMenu() и после OpenOptionsMenu(). Это закрывает меню, вызовы готовятся, но не открывают его снова. –

+1

Вы подумывали об использовании подменю? (Я знаю, что он не добавит в меню, как вы хотите, но функциональность о том, что вы, похоже, ищете). – Barak

ответ

0

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

Попробуйте это:

  1. В onOptionsItemSelected(), когда пользователь выбирает свой «добавить еще две опции» вариант, установить флаг в вашей деятельности, но больше ничего не делать.

  2. Переопределить onOptionsMenuClosed(). Проверьте, установлен ли флаг. Если это так, то сообщение должно выполняться потоком пользовательского интерфейса на следующем проходе. Он не должен ничего делать, кроме как снова открывать меню опций, например.

    runOnUiThread (новый Runnable() { @Override общественности недействительным запуска() { openOptionsMenu();} });

  3. Override onPrepareOptionsMenu(). Проверьте, установлен ли флаг. Если это так, добавьте два дополнительных пункта меню и снимите флажок. Вам нужно будет выполнить дополнительную работу, чтобы предотвратить добавление пункта меню «добавить больше элементов», чтобы добавлять новые элементы при каждом нажатии, если это не поведение, которое вы ищете.

Смежные вопросы