Как я могу динамически изменять действия панели действий? - PullRequest
62 голосов
/ 26 ноября 2011

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

Ответы [ 4 ]

128 голосов
/ 26 ноября 2011

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

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

15 голосов
/ 17 марта 2013

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

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

1 голос
/ 27 ноября 2015

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

AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.supportInvalidateOptionsMenu();
1 голос
/ 17 декабря 2012

ActionMode.invalidate () сделал свое дело.Это вызвало повторный вызов onPrepareActionMode().

Activity#invalidateOptionsMenu() did not вызвало onPrepareActionMode() при использовании элементов списка с множественным выбором.

...