android - 如何使用各自的导航图设置多个嵌套的 FragmentContainerViews?
问题描述
我正在考虑按照谷歌的指南将我的应用程序转换为单一活动。(使用 Kotlin)
假设我的活动中有 FragmentContainerView1,没有工具栏或其他任何东西。
此视图用于在登录屏幕之间导航、注册和显示主要片段。
在主片段内,我有另一个 FragmentContainerView2 应该根据主片段内的底部导航视图显示。
但后来我在 FragmentContainerView2 的片段中有一些元素,需要在 FragmentContainerView1 中执行操作。
我如何实现这一目标?
图片:
这里mainFragment包含BottomNavigation,其中mainMenuFragment是一个目的地,它必须在FragmentContainerView1中执行动作。如何获取 BottomNavigation 的内部导航控制器的参考?
编辑 1: navController=Navigation.findNavController(view.findViewById(R.id.fragmentContainer))
不起作用,仍然返回相同的外部导航控制器。
解决方案
不是一个完整的解决方案,但我找到的答案是将其中一个容器保留为 a <fragment/>
,另一个保留为FragmentContainerView
.
并获得内部导航控制器使用:
innerNavController= (activity as AppCompatActivity).findNavController(R.id.innerFragmentContainer)
仅适用于该特定命令和容器之一<fragment/>
。
同样在获得innerNavController
, Any 类型的调用后,findNavController()
会给出内部导航控制器。
要outerNavController
使用:
outerNavController = (activity as AppCompatActivity).findNavController(R.id.outerFragmentContainer)
推荐阅读
- docker - 应用程序依赖于为环境变量采购 secrets.sh。如何在我的 Dockerfile 中实现这一点?
- jquery - 单击其他div链接时关闭div jquery
- php - 如何使用 mail() 或 PHPMailer 创建带有文件图像上传的 HTML5 电子邮件联系表单?
- python - os.rename 说无法访问该文件,因为它正在被另一个进程使用
- javascript - 获取当前按下了哪些键
- c# - 循环中的 XSLT 只会在输出中获得第一个文件转换。如何停止缓存 XSLT 输出
- excel - 有没有办法找到一个值并将其设置为公式中的参考?
- java - 如何在 if 语句中使用计时器
- twitter-bootstrap - 我不明白为什么我的网站 (https://www.ictcircle.tech/contact.html) 上的表格不起作用
- git - 更改当前分支并保留本地更改