我正在为BottomNavigationView
的每个标签实现后退堆栈。 Architecture-component-samples GitHub存储库中有一个示例,该示例带有名为setupWithNavController
的扩展功能,可提供此功能。 我正在尝试修改扩展功能,因此特定的底部导航选项卡始终会将您带到相关导航图的起始位置。实现此目的的最佳方法是什么?
我曾尝试将导航控制器的后堆栈弹出到setupWithNavController
中的起始位置,但这导致用户看到正在发生的向后导航,这是我所不希望的。
例如在onNavigationItemSelectedListener
扩展功能中的片段事务之后:
setupWithNavController
我还尝试过在显示关联的导航主机之前弹出回栈,但是if(selectedFragment.navController.graph.id == R.id.some_nav_graph){
fragmentManager.executePendindTransactions()
selectedFragment.navController.popBackStack(selectedFragment.navController.graph.startDestination, false)
}
不允许这样做,并导致“忽略popBackStack()调用:FragmentManager已经保存了其状态。”
我决定只删除然后重新添加关联的导航图的FragmentNavigator
,这将导致导航控制器的后堆栈被清除。