Android: несколько опций меню в одном действии - PullRequest
11 голосов
/ 10 августа 2011

У меня есть Activity, содержащий ViewFlipper, и я хотел бы показать разные меню параметров для каждого представления в этом ViewFlipper.То есть тип меню, отображаемого при нажатии кнопки меню, будет зависеть от типа текущего вида.Однако onCreateOptionsMenu() вызывается только один раз (при первом отображении меню параметров), поэтому создание различных меню здесь невозможно.Как я могу решить это?

Любые предложения приветствуются.

1 Ответ

28 голосов
/ 10 августа 2011

Сначала прочитайте о onPrepareOptionsMenu (Меню меню)

Каждый раз, когда пользователь нажимает Меню на своем устройстве Android во время одного из ваших действий, onPrepareOptionsMenu метод вызывается.При первом отображении меню (т. Е. только один раз ) вызывается метод onCreateOptionsMenu.

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

Сделайте это (не используйте onCreateOptionsMenu(Menu menu))

//Dynamically create context Menu
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.clear(); //Clear view of previous menu
        MenuInflater inflater = getMenuInflater();
        if(condition_true)
            inflater.inflate(R.menu.menu_one, menu);
        else
            inflater.inflate(R.menu.menu_two, menu);
        return super.onPrepareOptionsMenu(menu);
    }
...