我刚刚了解了Android的整个导航功能,如何绘制图形并链接片段或活动,以可视化流程并通过Navigation.xml文件安全地传递意图参数。
我从一开始就有3个不同的问题:
您有什么线索可能导致这种情况吗?
答案 0 :(得分:1)
- 并非所有活动都可以通过编辑器添加到图形中(我知道我可以在“文本”选项卡中编写XML,但我相信存在某种问题)
如果您能够使用最新的Android Studio在示例项目中重现此内容,则应该file a bug against the Navigation Editor,因为应该列出所有活动。请注意,已经添加到图形中的活动将从“添加目标”列表中滤出(如您已添加)。
- 所有预览都丢失了(虽然没什么大不了,但仍然很有趣)
导航编辑器依赖于项目中的某个布局,该布局具有指向您的活动的tools:context
(即tools:context="com.example.MainActivity"
)来自动填充布局。仅当首先将目标添加到图形时才进行此检查-实际上,您需要手动向目标添加tools:layout="@layout/main_activity"
属性。
- 我无法关联活动
按照Getting Started guide for Navigation:
注意:“导航”组件是为具有一项主要活动且具有多个片段目标的应用程序设计的。主要活动与导航图相关联,并包含一个NavHostFragment,它负责根据需要交换目标。 在具有多个活动目标的应用中,每个活动都有自己的导航图。
在导航中,<activity>
目标用作出口点-将一个活动的图形链接到另一个活动,该活动将具有自己的导航图形。导航编辑器阻止您从<activity>
目标创建动作(目标之间的线),因为它们永远不会被触发-通过启动<activity>
目标,您已经离开了旧的活动(及其图形)后面。
根据Migrate to the Navigation component documentation,您应该专注于通过为该活动构建图形(无论它仅包含一个屏幕还是多个片段)来一次将一个活动转换为导航。然后,<activity>
目标使您可以将单独的活动链接在一起,并以某种方式替换对startActivity()
的调用,如果您愿意,可以将活动无缝地组合在一起。
答案 1 :(得分:0)
如果每个活动都包含多个片段,那么您可以为这些活动创建一个单独的导航图。您可以将一个活动中的片段链接到导航图中的另一个活动。因此,当另一个活动将被调用时,可以使用该活动的导航图。