55

我有兴趣尝试 Android Studio 中显示的导航图。但是在我导入谷歌示例后预览不可用

我使用了 Android Studio 3.2 Preview Canary 16

在此处输入图像描述

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:startDestination="@+id/launcher_home">

    <fragment
        android:id="@+id/launcher_home"
        android:name="com.android.samples.arch.componentsbasicsample.StartFragment"
        android:label="Home">

        <action
            android:id="@+id/end_action"
            app:destination="@id/end_dest" />

    </fragment>

    <fragment
        android:id="@+id/end_dest"
        android:name="com.android.samples.arch.componentsbasicsample.EndFragment"
        android:label="End"
        >

    </fragment>
</navigation>

2018 年 10 月 6 日更新:

即使我重建项目它也不起作用。但是如果添加新屏幕,它会在预览模式下显示新屏幕

在此处输入图像描述

4

3 回答 3

204

您应该在导航编辑器(导航图的 xml 文件)中单击“文本”选项卡,然后添加:

tools:layout="@layout/layout_name"

内部目标元素。

应该是这样的:

<fragment
    android:id="@+id/someFragment"
    android:name="com.freesoulapps.navigationtest.fragments.SomeFragment"
    android:label="Some Fragment"
    tools:layout="@layout/layout_name">
</fragment>
于 2018-06-09T17:55:33.897 回答
17

还有另一种方法可以在导航 xml 中进行预览。首先进入你的xml片段添加

tools:context="com.packagename.nameFragment"

我的片段布局示例

就是这样

如果您进入导航文件,您可以在选择和导航编辑器中看到预览

在此处输入图像描述 在此处输入图像描述

如果您查看代码是自动编写的

tools:layout="@layout/layout_name"

对我来说,在导航编辑器中添加片段之前进行预览更符合逻辑。可能有自动添加工具的方法:布局中的上下文

自动完成不建议工具:上下文片段仅建议工具:上下文活动主机,因此您需要编写片段的名称...如果有人对此有技巧

了解有关工具的更多信息:上下文: 在此处输入链接描述

于 2019-08-19T21:54:55.180 回答
6

只需将 tools:layout="fragmentname" 添加到预览不可见的每个片段。例子:-

<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/startFragment">

    <fragment
        android:id="@+id/pickupFragment"
        android:name="com.example.cup_cake.PickupFragment"
        android:label="fragment_pickup"
        tools:layout="@layout/fragment_pickup" />

</navigation>
于 2021-06-27T13:26:48.817 回答