我正在为intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
的每个选项卡实现后退堆栈。建筑组件样本GitHub存储库中有一个示例,该示例带有名为setupWithNavController
的扩展功能,可提供此功能。 我正在尝试修改扩展功能,因此特定的底部导航标签始终会将您带到相关导航图的起始目的地。实现此目的的最佳方法是什么?
我尝试将导航控制器的后堆栈弹出到BottomNavigationView
中的起始位置,但这导致用户看到正在发生的后向导航,这是我所不希望的。
例如在onNavigationItemSelectedListener
扩展函数中的片段事务之后:
setupWithNavController
我还尝试过在显示关联的导航主机之前弹出回栈,但是if(selectedFragment.navController.graph.id == R.id.some_nav_graph){
fragmentManager.executePendindTransactions()
selectedFragment.navController.popBackStack(selectedFragment.navController.graph.startDestination, false)
}
不允许这样做,并导致“忽略popBackStack()调用:FragmentManager已经保存了其状态。”
答案 0 :(得分:0)
我决定只删除然后重新添加关联的导航图的NavHostFragment
,这将导致导航控制器的后堆栈被清除。
答案 1 :(得分:0)
问题在最新的导航组件构建 2.4.0-alpha01 中得到解决,但是在其中使用 Safe Args 时存在很大问题,因此除非您不使用安全 args,否则它完全没问题