Как только первый фрагмент попадает в действие, он раздувает некоторое меню (на самом деле только одну кнопку действия) в макете 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