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

使用导航组件和BottomNavigationView的后堆栈流问题

锺宜
2023-03-14

我使用的是Android导航组件。有一个带有FragmentContainerView(NavHostFragment)的活动,通过common_navigation_graph具有简单的导航流,但在一个片段上有一个嵌套的NavHostFragment和BottomNavigationView。原因是——我想在片段上有3个标签。底部导航配置自己的导航控制器和单独的导航图

val navController = activity?.findNavController(R.id.navHostViewPagerView)
binding?.bottomNavigation?.setupWithNavController(navController!!)

在每个选项卡上,还有一个嵌套片段,带有自己的FragmentContainerView和自己的小选项卡导航图导航方案:[在此处输入图像描述][1]
[1]:https://i.stack.imgur.com/gmXOY.png

总的来说,它工作得很好。选项卡之间的导航,在一些选定的选项卡中的导航工作得很好,后栈工作得很好

override fun handleOnBackPressed() {    
    view?.findNavController()?.popBackStack()
}

但是因为有一个从common_navigation_graph到下一个片段的导航(图片上有一些下一个片段),BackStack流将会中断。我可以用选项卡返回片段,但是选项卡中嵌套片段的BackStack流将不起作用。只有最后一个片段将显示(表1.2)蓝色箭头过渡不起作用。

在handleOnBackPressed()视图上==null和fragment。id==0。碎片被摧毁了

问题是如何保存在从其他fragmnet从公共导航图返回时浏览嵌套选项卡片段的能力

共有1个答案

帅彦
2023-03-14

每个选项卡应该保留自己的后栈。

https://github.com/googlesamples/android-architecture-components/tree/master/NavigationAdvancedSample

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

  • 我已经从连接到NavController的导航抽屉中导航到了DialogFragment。但当我导航到另一个目标时,我已经将弹出窗口设置为包含对话框片段,但它并没有清除堆栈。如何清除堆栈? AM从LogoutDialog调用此方法 我只使用片段和一个活动。 这是我导航图的一部分

  • Android Jetpack导航,BottomNavigationView带自动碎片返回堆栈返回按钮点击? 我想要的,在用户选择多个选项卡后,用户点击返回按钮后,应用程序必须重定向到他/她打开的最后一个页面。 我使用Android ViewPager实现了同样的功能,将当前选定的项保存在ArrayList中。Android Jetpack导航发布后是否有自动后退堆栈?我想用导航图实现它 acti

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

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

  • 我的导航有问题。这是我的导航码。 我创建了三个堆栈,如AppStack、StartStack和AuthStack。这些是在createAppContainer()函数中使用的,希望访问这些 this.props.navigation.navigate('App') ... 我可以访问 this.props.navigation.navigate(开始) 和 this.props.navigatio