Bottom Navigation как скрыть на некоторых Fragmentах?
В Activity имеется Bottom Navigation. Мне этот компонент не нужен на всех fragmentах, я хочу его там скрыть.
Как это можно сделать?
Я сейчас пытаюсь достучаться из Fragment
val nav = view.findViewById<BottomNavigationView>(R.id.nav_view)
nav.visibility = View.GONE
Ожидаемо падает
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.peshkariki/com.app.peshkariki.MainActivity}: java.lang.IllegalStateException: nav must not be null
Ответы (2 шт):
Автор решения: Andrew
→ Ссылка
Я бы вам советовал два варианта: попроще и посложнее.
- При использовании нижнего меню на нужном вам фрагменте просто скрывайте нижнее меню как вы уже это сделали. Проблема в том что bottomNavigationView находится в разметке активности а не фрагмента. Поэтому приложение падает.
- Второй вариант - использование интерфейса между активностью и фрагментом. То есть вы сделаете канал связи по которому из нужного вам фрагмента можно будет скрыть нижнее меню.
Автор решения: Child_of_the_sun
→ Ссылка
В одном из своих проектов решил эту проблему достаточно просто. При создании Activity, которому принадлежит BottomNavigationView я сохраняю ссылку на это Activity, через которую смогу получить доступ к панели навигации, а саму навигацию делаю публичной. Далее во фрагментах, где не должно быть видно навигации при старте скрываю ее, а в остальных фрагментах при старте возврашаю обратно.