首页 > 解决方案 > navigation.xml :缺少活动,预览和链接不可用

问题描述

我刚刚了解了 Android 中的整个导航功能,如何绘制图形和链接片段或活动,以便通过 navigation.xml 文件安全地传递意图参数。

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

  1. 并非所有活动都可以通过编辑器添加到图表中(我知道我可以在文本选项卡中编写 XML,但我相信存在某种问题)
  2. 所有的预览都不见了(不是什么大不了的事,但仍然很有趣)
  3. 我无法链接活动

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

标签: androidnavigation

解决方案


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

如果您能够使用最新的 Android Studio 在示例项目中重现此错误,则应针对导航编辑器提交错误,因为应列出所有活动。请注意,您已经添加到图表中的活动将从“添加目标”列表中过滤掉(因为您已经添加了它)。

  1. 所有的预览都不见了(不是什么大不了的事,但仍然很有趣)

导航编辑器依赖于项目中的一些布局,这些布局tools:context指向您的活动(即tools:context="com.example.MainActivity")来自动填充布局。此检查仅在首次将目的地添加到图表时进行 - 事实上,您需要tools:layout="@layout/main_activity"手动将属性添加到目的地。

  1. 我无法链接活动

根据导航入门指南

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

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

根据Migrate to the Navigation 组件文档,您应该专注于一次将一个活动转换为 Navigation,方法是为该活动构建图表(无论它只包含一个屏幕还是多个片段)。<activity>然后,目的地允许您将单独的活动链接在一起,以startActivity()一种允许您将活动无缝组合在一起的方式替换调用,如果您愿意的话。


推荐阅读