navigation.xml:活动丢失,预览和链接不可用

时间:2019-05-31 03:48:11

标签: android navigation

我刚刚了解了Android的整个导航功能,如何绘制图形并链接片段或活动,以可视化流程并通过Navigation.xml文件安全地传递意图参数。

我从一开始就有3个不同的问题:

  1. 并非所有活动都可以通过编辑器添加到图形中(我知道我可以在“文本”选项卡中编写XML,但我相信存在某种问题)
  2. 所有预览都丢失了(虽然没什么大不了,但仍然很有趣)
  3. 我无法关联活动

您有什么线索可能导致这种情况吗?

2 个答案:

答案 0 :(得分:1)

  
      
  1. 并非所有活动都可以通过编辑器添加到图形中(我知道我可以在“文本”选项卡中编写XML,但我相信存在某种问题)
  2.   

如果您能够使用最新的Android Studio在示例项目中重现此内容,则应该file a bug against the Navigation Editor,因为应该列出所有活动。请注意,已经添加到图形中的活动将从“添加目标”列表中滤出(如您已添加)。

  
      
  1. 所有预览都丢失了(虽然没什么大不了,但仍然很有趣)
  2.   

导航编辑器依赖于项目中的某个布局,该布局具有指向您的活动的tools:context(即tools:context="com.example.MainActivity")来自动填充布局。仅当首先将目标添加到图形时才进行此检查-实际上,您需要手动向目标添加tools:layout="@layout/main_activity"属性。

  
      
  1. 我无法关联活动
  2.   

按照Getting Started guide for Navigation

  

注意:“导航”组件是为具有一项主要活动且具有多个片段目标的应用程序设计的。主要活动与导航图相关联,并包含一个NavHostFragment,它负责根据需要交换目标。 在具有多个活动目标的应用中,每个活动都有自己的导航图。

在导航中,<activity>目标用作出口点-将一个活动的图形链接到另一个活动,该活动将具有自己的导航图形。导航编辑器阻止您从<activity>目标创建动作(目标之间的线),因为它们永远不会被触发-通过启动<activity>目标,您已经离开了旧的活动(及其图形)后面。

根据Migrate to the Navigation component documentation,您应该专注于通过为该活动构建图形(无论它仅包含一个屏幕还是多个片段)来一次将一个活动转换为导航。然后,<activity>目标使您可以将单独的活动链接在一起,并以某种方式替换对startActivity()的调用,如果您愿意,可以将活动无缝地组合在一起。

答案 1 :(得分:0)

如果每个活动都包含多个片段,那么您可以为这些活动创建一个单独的导航图。您可以将一个活动中的片段链接到导航图中的另一个活动。因此,当另一个活动将被调用时,可以使用该活动的导航图。