当前位置: 首页 > 知识库问答 >
问题:

使用导航组件的多个后台堆栈-如何始终转到特定底部导航选项卡的开始目标?

班凌
2023-03-14

我正在为底部导航视图(BottomNavigationView)的每个选项卡实现一个后堆栈。架构组件示例GitHub repo有一个扩展函数示例,名为setupWithNavController,提供此功能。我试图修改扩展功能,以便特定的底部导航选项卡始终将您带到相关导航图的开始目标。实现这一目标的最佳方式是什么?

我尝试在onNavigationItemSelectedListener中将nav控制器的后堆栈弹出到其开始目标,但这会导致用户看到发生了后导航,这是我不想看到的。

e、 g.在扩展功能中的setupWithNavController中执行片段事务后:

if(selectedFragment.navController.graph.id == R.id.some_nav_graph){
  fragmentManager.executePendindTransactions()
  selectedFragment.navController.popBackStack(selectedFragment.navController.graph.startDestination, false)
}

我还尝试在显示关联的nav主机之前弹出后堆栈,但FragmentNavigator不允许这样做,并导致“忽略popBackStack()调用:FragmentManager已经保存了它的状态”。

共有2个答案

景国兴
2023-03-14

问题在最新的导航组件build 2.4.0-alpha01中得到解决,但在其中使用安全参数时存在很大问题,因此除非您不使用安全参数,否则它非常好

施飞驰
2023-03-14

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

 类似资料:
  • 在我的应用程序中,我有5个片段。我使用底部导航来管理它们。但在第一个片段中,我有回收器视图,当我单击回收器项目时,我需要在此选项卡(第一个选项卡)中打开第二个片段。 现在,当我试图打开第二个片段时,他打开了所有标签上方。 这就是我如何打开第二个碎片

  • 当显示主片段时,我试图清除后堆栈中的所有片段。在导航图中,我添加了这个动作 在登录片段中。我尝试了findNavController()。导航(LoginFragmentDirections.actionLoginFragmentToHomeFragment()) 和 我从这里的文件中了解到https://developer.android.com/guide/navigation/navigat

  • 问题内容: 我是jquery和bootstrap的新手,所以请考虑我的错误。我已经创建了用于登录和注册的bootstrap模式。它包含两个称为登录和注册的导航选项卡。我有两个按钮弹出相同的Modal窗口,但在Modal窗口中显示不同的选项卡。每个选项卡中都有一个带有许多输入的表单。我的问题是,当我单击“登录”按钮时,在模式中弹出“登录”选项卡时弹出模式,而当我单击页面上的“注册”按钮时,则打开注册

  • 我尝试使用Android导航组件,但后堆栈有问题。 我有片段A,B。要从A导航到B,我写下: 但我如何才能返回到点击的返回按钮?

  • 我需要一些关于react原生应用程序的社区建议。我是一个全新的人,不理解其中的一些基本区别。 关于反应本地文档创建StackNavigator的示例建议如下:从“反应导航堆栈”导入{createStackNav导航仪}; 我发现很多人使用下面的样式导入{堆栈导航器,Tab导航器}从“反应导航”; 为什么人们使用以上两种不同的风格?哪一个更合适,为什么? react-navigation-stack

  • 我有一个非常简单的应用程序,由三个片段和一个底部导航栏组成,使用“New Project”创建- 有没有“标准”的方法来做到这一点? 我尝试过: 使用导航组件的,它似乎启动了带有自己的后栈的片段并破坏了底部导航。 以不同的方式使用,这要么导致异常,要么以不同的方式破坏底部导航。 在这篇帖子中,有人问了完全相同的问题,但被标记为重复。我没有找到答案,尤其是关于导航组件。