首页 > 解决方案 > 使用导航组件和 BottomNavigationView 的返回堆栈流问题

问题描述

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

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

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

一般来说,它工作得很好。选项卡之间的导航,某些选定选项卡中的导航效果很好,返回堆栈效果很好

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

但是由于从 common_navigation_graph(图片上的 SomeNextFragment)导航到下一个片段,所以 backStack 流将被破坏。我将能够使用选项卡返回片段,但选项卡中嵌套片段的 backStack 流将不起作用。只会显示最后一个片段(Tab1.2)蓝色箭头转换不起作用。

在 handleOnBackPressed() view==null 和 fragment.id==0 上。碎片被破坏

问题是如何保存从 common_navigation_graph 的其他片段返回的嵌套 Tab 片段的导航能力

标签: androidandroid-fragmentsbottomnavigationviewandroid-architecture-navigationfragment-backstack

解决方案



推荐阅读