Android Navigation Bar: Как при повторном выборе элемента на панели навигации переходить к основному фрагменту?

Рейтинг: 1Ответов: 0Опубликовано: 30.03.2023

Нашел такой вопрос с таким ответом в котором идеально описано необходимое мне поведение навигационной панели.

Поведение:

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

Как можно решить эту проблему по-другому?

Ответы

Ответов пока нет.