Я работаю над реализацией заднего стека для каждой вкладки BottomNavigationView
. В репозитории GitHub с образцами компонентов архитектуры есть пример с функцией расширения под названием setupWithNavController
, которая обеспечивает эту функциональность. Я пытаюсь изменить функцию расширения, чтобы указанная c нижняя вкладка навигации всегда приводила вас к начальному месту назначения связанного графа навигации. Как лучше всего достичь этого?
Я попытался вытолкнуть задний стек контроллера навигации в его начальное место назначения в onNavigationItemSelectedListener
, но это привело к тому, что пользователь увидел, что происходит обратная навигация, чего я не хочу.
например, после транзакции фрагмента в функции расширения setupWithNavController
:
if(selectedFragment.navController.graph.id == R.id.some_nav_graph){
fragmentManager.executePendindTransactions()
selectedFragment.navController.popBackStack(selectedFragment.navController.graph.startDestination, false)
}
Я также попытался вытащить задний стек до того, как отобразится связанный с ним узел навигации, но FragmentNavigator
не позволяет этого и приводит к «Игнорированию вызова popBackStack (): FragmentManager уже сохранил свое состояние».