使用导航组件的多个后置堆栈-如何始终转到特定底部导航选项卡的起始位置?

问题描述 投票:0回答:1

我正在为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已经保存了其状态。”

android android-architecture-components
1个回答
0
投票

我决定只删除然后重新添加关联的导航图的FragmentNavigator,这将导致导航控制器的后堆栈被清除。

© www.soinside.com 2019 - 2024. All rights reserved.