Скрытие меню с панели инструментов на определенном фрагменте в рамках одного действияAndroid

Форум для тех, кто программирует под Android
Anonymous
Скрытие меню с панели инструментов на определенном фрагменте в рамках одного действия

Сообщение Anonymous »

У меня есть действие, содержащее несколько фрагментов.
Как только первый фрагмент попадает в действие, он раздувает некоторое меню (на самом деле только одну кнопку действия) в макете AppBar действия:

Код: Выделить всё

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.menu_info, menu)
}
Как только пользователь перейдет ко второму фрагменту того же действия, эта кнопка действия должна быть скрыта. Я не могу этого добиться (см. мои решения ниже).
Итак, обычно возникает вопрос:
Как скрыть меню от активности AppBarLayout только для некоторых фрагментов в стеке?
ПРИМЕЧАНИЕ. Мне не нужно скрывать всю панель инструментов (заголовок все равно должен отображаться, я хочу скрыть только кнопку действия!)
Я пробовал разные решения, которые, к сожалению, не работают:
  • Вызовите setHasOptionsMenu(false) во втором фрагменте (пробовал как в onCreate, так и в onCreateView)
  • Вызовите Activity.invalidateOptionsMenu() в разных обратных вызовах фрагмента, а затем попытайтесь скрыть элемент меню в onCreateOptionsMenu, которое следует вызвать снова после вызова недействительным. Но я вижу, что он не вызывается даже после вызова недействительности:

Код: Выделить всё

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
menu.forEach {
it.isVisible = false
}
}
Также пробовал объединить все эти решения, но не получилось - кнопка все равно отображается на втором фрагменте.

Подробнее здесь: https://stackoverflow.com/questions/774 ... e-activity

Вернуться в «Android»