代码之家  ›  专栏  ›  技术社区  ›  Sebastien FERRAND

navigation.xml:缺少活动,预览和链接不可用

  •  0
  • Sebastien FERRAND  · 技术社区  · 5 年前

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

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

    1. 不是所有的活动都可以通过编辑器添加到图表中(我知道我可以在文本选项卡中编写XML,但我相信有一些问题)
    2. 所有预览都不见了(虽然不是什么大事,但仍然很有趣)
    3. 我不能把这些活动联系起来

    你有什么线索知道是什么引起的吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   ianhanniballake    5 年前
    1. 不是所有的活动都可以通过编辑器添加到图表中(我知道我可以在文本选项卡中编写XML,但我相信有一些问题)

    你应该 file a bug against the Navigation Editor 如果您能够使用最新的Android Studio在一个示例项目中重现这一点,那么应该列出所有活动。请注意,已添加到图表中的活动将从“添加目标”列表中筛选出来(正如已添加的一样)。

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

    导航编辑器依赖于项目中具有 tools:context 指向你的活动(即。, tools:context="com.example.MainActivity" )自动填充布局。此检查仅在第一次将目标添加到图形时完成-事实上,您需要添加 tools:layout="@layout/main_activity" 手动将属性设置为目标。

    1. 我不能把这些活动联系起来

    根据 Getting Started guide for Navigation :

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

    在航行中 <activity> 目的地作为一个退出点——将一个活动的图形链接到另一个活动,它将有自己的导航图。导航编辑器阻止您从 <活动> 目的地,因为它们永远不会被触发-通过启动 <活动> 目的地,您已将旧活动(及其图表)抛在后面。

    根据 Migrate to the Navigation component documentation ,您应该专注于一次将一个活动转换为导航,方法是为该活动构建图表(无论它只包含一个屏幕还是多个片段)。 <活动> 然后,目的地允许您将单独的活动链接在一起,将调用替换为 startActivity() 在某种程度上,如果你愿意,可以让你无缝地将活动结合在一起。