如何使用 NavigationUI 将参数传递给从 NavigationDrawer 调用的片段?

Sim*_*yon 6 android-architecture-navigation

我已将我的应用程序转换为使用NavigationUI. 但setupWithNavController()取代了我的setNavigationItemSelectedListener().

在我的监听器中,我将一个(类型安全)参数传递给片段。

Hen*_*ärd 0

如果我理解你的问题是正确的,你正在寻找的是:

导航参数文档

简要地:

在导航图中,在您想要将值发送到的片段上,您将添加一个参数。

<fragment android:id="@+id/myFragment" >
    <argument
        android:name="amount"
        app:argType="integer"
        android:defaultValue="0" />
</fragment>
Run Code Online (Sandbox Code Playgroud)

然后,当您将该片段引用为操作时,库将生成一个 Directory 类,该类如下所示:

 val action = SpecifyAmountFragmentDirections.confirmationAction(amount)
 v.findNavController().navigate(action)
Run Code Online (Sandbox Code Playgroud)

名称是根据您命名的片段和操作生成的。另请注意,如果对象也是可打包的,则可以发送整个对象。

如果有问题的片段是您的图表的起始目的地,我不确定您是否可以立即执行此操作。解决方法可能是将数据加载到片段中?或者也许从 Activity 进入共享 ViewModel?

祝你好运!