Несколько обратных стеков с использованием компонента навигации - Как всегда go начинать место назначения для указанной c нижней вкладки навигации? - PullRequest
0 голосов
/ 26 мая 2020

Я работаю над реализацией заднего стека для каждой вкладки 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 уже сохранил свое состояние».

1 Ответ

0 голосов
/ 28 мая 2020

Я решил просто удалить, а затем снова добавить NavHostFragment связанного навигационного графа, что приводит к очистке заднего стека навигационного контроллера.

...