导航预览在Android Studio 3.2预览版中不可用

Lon*_*ger 18 android android-architecture-components android-studio-3.2 android-architecture-navigation

我有兴趣尝试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>
Run Code Online (Sandbox Code Playgroud)

18/6/2018更新:

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

在此输入图像描述

Ale*_*lex 66

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

tools:layout="@layout/layout_name"
Run Code Online (Sandbox Code Playgroud)

内部目标元素.

应该是这样的:

<fragment
    android:id="@+id/someFragment"
    android:name="com.freesoulapps.navigationtest.fragments.SomeFragment"
    android:label="Some Fragment"
    tools:layout="@layout/layout_name">
</fragment>
Run Code Online (Sandbox Code Playgroud)


小智 14

只需将 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>
Run Code Online (Sandbox Code Playgroud)


小智 5

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

tools:context="com.packagename.nameFragment"
Run Code Online (Sandbox Code Playgroud)

以我的碎片布局为例

就是这样

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

在此处输入图片说明 在此处输入图片说明

如果你看代码是自动写

tools:layout="@layout/layout_name"
Run Code Online (Sandbox Code Playgroud)

对我来说,在将片段添加到导航编辑器中之前进行预览是更合理的选择。可能存在在布局中自动添加tools:context的方法

自动完成功能不建议使用tools:context Fragment只建议使用tools:context Activity主机,因此您需要输入该片段的名称...如果有人对此有窍门,

了解有关tools:context的更多信息: 在此处输入链接描述