android - Jetpack:无法转换到其他 navigation.xml 的片段
问题描述
我目前正在尝试将navigation2.xml 中的片段转换为navigation.xml。我认为参考其他导航图可以但不起作用。如果有关于在不同 navigation.xml 文件的片段之间转换的示例或提示,我很乐意听取您的意见!
<!-- (root) navigation.xml -->
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/fragment">
<include app:graph="@navigation/included_graph" />
<fragment
android:id="@+id/fragment"
android:name="com.example.myapplication.BlankFragment"
android:label="Fragment in Root Graph"
tools:layout="@layout/fragment_blank">
<action
android:id="@+id/action_fragment_to_second_graph"
app:destination="@id/second_graph" />
</fragment>
...
</navigation>
第二个导航文件
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/second_graph"
app:startDestination="@id/includedStart">
<fragment
android:id="@+id/includedStart"
android:name="com.example.myapplication.IncludedStart"
android:label="fragment_included_start"
tools:layout="@layout/fragment_included_start" />
</navigation>
解决方案
根据设计导航图文档:
[嵌套图] 还提供了一定程度的封装——嵌套图之外的目的地无法直接访问嵌套图中的任何目的地。相反,它们应该
navigate()
嵌套图本身,其中内部逻辑可以更改而不影响图的其余部分。
因此,您可以navigate(R.id.second_graph)
从 中的任何地方毫无问题地使用navigation.xml
,但您不能直接访问该其他图表中的任何内容。
请注意,一个例外是通过 URI 导航,它允许您通过使用隐式深层链接导航到图表中的任何目的地(无论是否嵌套)。
推荐阅读
- docker - 如何创建 Kubernetes 入口以使用 SparkJava 端口 4567?
- haskell - 为什么我的函数的返回类型是 a -> Int
- java - 我如何提取 XML 的某些部分但有一些不相似的部分
- ruby - 请添加包含“/Users/me/.rvm/bin/rvm-auto-ruby”的目录
- java - 如何使用 Hibernate 使用线程将数据保存在数据库中?
- javascript - 如何过滤重新绘制成本高昂的 AngularJS 组件列表?
- python - BeautifulSoup - 修改标签的内容
- r - 从多个数据帧中总结一个向量
- javascript - 如何在用户输入中写入数组的编号并获取该特定数组编号的信息?
- lisp - 打印带有中缀符号的列表