Android Navigation Bar: Как при повторном выборе элемента на панели навигации переходить к основному фрагменту?
Нашел такой вопрос с таким ответом в котором идеально описано необходимое мне поведение навигационной панели.
Поведение:
Home
->Detail Page A
->Detail Page B
затем на панели навигации нажимаемHome
->Home
Home
->Detail Page A
->Detail Page B
затем нажимаемProfile
на панели навигации, далее сноваHome
. ОтображаетсяDetail Page B
, затем еще разHome
сработает как в первом случае (вернет обратно на фрагментHome
)
Здесь Home
и Profile
— фрагменты, привязанные к кнопкам на панели навигации, а Detail Page
A
и B
— дочерние фрагменты, в которые можно перейти из Home
Код из ответа:
navController = findNavController(R.id.nav_host_container)
binding.navView.setOnItemReselectedListener { menuItem ->
val selectedMenuItemNavGraph =
navController.graph.findNode(menuItem.itemId) as NavGraph
selectedMenuItemNavGraph.let { menuGraph ->
navController.popBackStack(menuGraph.startDestinationId, false)
}
}
Но когда я пытаюсь выполнить его, получаю ошибку:
androidx.navigation.fragment.FragmentNavigator$Destination cannot be cast to androidx.navigation.NavGraph
Это связано с тем, что navController.graph.findNode(menuItem.itemId)
возвращает тип NavDestination
, который нельзя привести к NavGraph
Как можно решить эту проблему по-другому?