首页 > 解决方案 > 如何使用各自的导航图设置多个嵌套的 FragmentContainerViews?

问题描述

我正在考虑按照谷歌的指南将我的应用程序转换为单一活动。(使用 Kotlin)

假设我的活动中有 FragmentContainerView1,没有工具栏或其他任何东西。
此视图用于在登录屏幕之间导航、注册和显示主要片段。

在主片段内,我有另一个 FragmentContainerView2 应该根据主片段内的底部导航视图显示。

但后来我在 FragmentContainerView2 的片段中有一些元素,需要在 FragmentContainerView1 中执行操作。

我如何实现这一目标?

图片:
这里mainFragment包含BottomNavigation,其中mainMenuFragment是一个目的地,它必须在FragmentContainerView1中执行动作。如何获取 BottomNavigation 的内部导航控制器的参考?

编辑 1: navController=Navigation.findNavController(view.findViewById(R.id.fragmentContainer))不起作用,仍然返回相同的外部导航控制器。 主导航图

标签: androidandroid-fragmentsbottomnavigationviewandroid-jetpackandroid-jetpack-navigation

解决方案


不是一个完整的解决方案,但我找到的答案是将其中一个容器保留为 a <fragment/>,另一个保留为FragmentContainerView.

并获得内部导航控制器使用:

innerNavController= (activity as AppCompatActivity).findNavController(R.id.innerFragmentContainer)

仅适用于该特定命令和容器之一<fragment/>

同样在获得innerNavController, Any 类型的调用后,findNavController()会给出内部导航控制器。
outerNavController使用:

outerNavController = (activity as AppCompatActivity).findNavController(R.id.outerFragmentContainer)

推荐阅读