0

我正在使用导航组件,但无法生成 Args 类,因此我可以通过Fragment以下方式在目的地使用它:

private val myArgs by navArgs<MyDestFragmentArgs>()

// later in code access properties from args
username = myArgs.username

我看到它MySourceFragmentDirections是生成的,所以我假设插件使用正确。我尝试在 Android Studio 中清理和重建项目,但没有看到任何生成的 *Args 类。

我的nav_graph.xml包含:

<fragment
    android:id="@+id/mySourceFragment"
    android:name="com.example.MySourceFragment"
    android:label="@string/nav_title_source"
    tools:layout="@layout/source_fragment">

    <action
        android:id="@+id/action_to_dest"
        app:destination="@id/myDestFragment">

        <argument
            android:name="username"
            app:argType="string" />

    </action>

</fragment>
4

1 回答 1

1

我意识到我nav_graph.xml的格式不正确(argument元素应该在目标片段内,而不是在action源片段中定义的元素内),如下所示:

    <fragment
        android:id="@+id/mySourceFragment"
        android:name="com.example.MySourceFragment"
        android:label="@string/my_source_screen_title"
        tools:layout="@layout/my_source_fragment">

        <action
            android:id="@+id/action_to_dest"
            app:destination="@+id/myDestinationFragment" />

    </fragment>

    <fragment
        android:id="@+id/myDestinationFragment"
        android:name="com.example.MyDestinationFragment"
        android:label="@string/my_dest_screen_title"
        tools:layout="@layout/my_dest_fragment">

        <argument
            android:name="username"
            app:argType="string" />
    </fragment>
于 2020-04-05T15:42:46.853 回答