Как сделать так, чтобы BottomNavigationView Работал не только MainActivity?

Хочу сделать так, чтобы когда авторизировался в (MainActivity) перекинуло в новое активити, где будет уже BottomNavigationView, в котором Фрагменты меняются. У меня всё получилось, кроме того, что фрагменты меняются. А когда делаю просто в MainActivity, Фрагменты спокойно меняются.

Видимо только работает в MainActivity, или как-то можно это по другому.


Ответы (1 шт):

Автор решения: Danila Kartovitskii

Без примеров кода невозможно понять что у Вас не работает.

Для выполнения задачи необязательно иметь 2 Activity. Достаточно одного MainActivity.

Если требуется убирать BottomNavigationView для определенного фрагмента, вы можете сделать в MainActivity список idшников фрагментов на которых необходимо показывать BottomNavigationView.

private val botNavFragments = listOf(
    R.id.favorite_fragment,
    R.id.profile_fragment,
    R.id.main_fragment
)

И добавить NavController.OnDestinationChangedListener который бы отслеживал изменения фрагментов и прятал BottomNavigationView. Вот пример реализации:

  private val botNavFragments = listOf(
    R.id.favorite_fragment,
    R.id.profile_fragment,
    R.id.main_fragment
)


private val destinationListener =
    NavController.OnDestinationChangedListener { _, destination, _ ->

        binding.bnNavigation.isVisible = botNavFragments.contains(destination.id)
    }

override fun onResume() {
    super.onResume()
    navController?.addOnDestinationChangedListener(destinationListener)
}

override fun onPause() {
    navController?.removeOnDestinationChangedListener(destinationListener)
    super.onPause()
}
→ Ссылка