Как я могу изменить действия панели действий динамически?

У меня есть активность с ActionBar и навигация по вкладкам. Я использую режим разделения, поэтому вкладки находятся вверху и действия находятся в нижней панели. Как я могу динамически изменять нижние действия? Мне нужно это, потому что каждая вкладка имеет разные действия.

Поскольку действия заполняются меню параметров действия, вы можете использовать Activity#invalidateOptionsMenu() . Это приведет к сбросу текущего меню и снова onPrepareOptionsMenu методы onCreateOptionsMenu / onPrepareOptionsMenu вашей активности, чтобы перестроить его.

Если вы используете вкладки панели действий, чтобы изменить конфигурацию fragmentов, это лучший способ. Каждый fragment управляет своей частью меню. Эти fragmentы должны вызвать setHasOptionsMenu(true) . Когда fragmentы с элементами меню параметров добавляются или удаляются, система автоматически отменяет действие меню опций и вызывает методы onCreateOptionsMenu / onPrepareOptionsMenu каждого fragmentа в дополнение к действию. Таким образом, каждый fragment может управлять своими собственными элементами, и вам не нужно беспокоиться о выполнении переключения меню вручную.

Activity.invalidateOptionsMenu () требует уровня API 11. Существует более простое решение, которое обратно совместимо:

Сначала добавьте MenuItem в меню, но установите его видимость на false . При желании установите видимость true , используя MenuItem.setVisible ()

ActionMode.invalidate () сделал трюк. Это вызвало onPrepareActionMode() .

onPrepareActionMode() Activity#invalidateOptionsMenu() не вызывало onPrepareActionMode() при использовании элементов списка с мульти-select.

Activity.invalidateOptionsMenu() требует уровня API 11. Используйте версию поддержки поддержки поддержки SupportInvalidateOptionsMenu () .

 AppCompatActivity activity = (AppCompatActivity) getActivity(); activity.supportInvalidateOptionsMenu(); 
  • Android - NullPointerException в SearchView в панели действий
  • Панель действий Кнопка «Назад» не работает
  • Как resize панели действий
  • Как сместить ActionBar вместе с NavigationDrawer
  • getActionBar возвращает null
  • Как удалить текст заголовка из Android ActionBar?
  • Как использовать SearchView в панели инструментов Android
  • Панель действий Android, не отображающая переполнение
  • Как добавить элемент раскрывающегося списка в панели действий
  • Как я могу реализовать пользовательскую панель действий с пользовательскими кнопками в Android?
  • Как resize текста заголовка в панели действий?
  • Interesting Posts

    Cron работает, но ничего не происходит

    Я просто пролил кофе на своем ноутбуке, что мне делать?

    Как создать весь DDL схемы Oracle (сценарий)?

    Назначение пользовательских расширений для выделения синтаксиса языка в Notepad ++

    Родовые типы подстановок не должны использоваться в возвращаемых параметрах

    Поддерживает ли Android JDK 6 или 7

    Какова максимальная длина действительного адреса электронной почты?

    Невозможно установить значение поля статического объекта (ошибка LNK2001: неразрешенный внешний символ)

    Использование API даты и времени Joda для анализа нескольких форматов

    Каково решение проблемы N + 1 в JPA и Hibernate?

    Обратный стоп-бар

    Какую библиотеку WebSocket использовать в приложении Android?

    Почему вам нужно вызывать URLConnection # getInputStream, чтобы иметь возможность записывать URLConnection # getOutputStream?

    изменить цвет фона Предпочтения

    Зависимости Maven не отображаются в WEB-INF / lib

    Давайте будем гением компьютера.