0

任何人都请解释一下,如何在导航架构中为抽屉的标题布局定义动作。

快照

现在,我需要设置抽屉标题的点击,并将其设置为:

headerOfNavDrawer.setOnClickListener{
    //Here I want to navigate to editProfileFragment
    //But For navigation I need an action in nav arch graph.
    //Where to put action??
}
4

1 回答 1

1

你有两件事需要:

  1. NavController.

根据Navigate to a destination documentation,您可以使用findNavController(R.id.your_nav_host_fragment)您在 Activity 布局中放置的R.id.nav_host_fragment位置android:idNavHostFragment

  1. 转到编辑配置文件片段的操作。

为此,导航允许您设置全局操作- 可从图表中的每个目的地获得的操作。这是从您的活动提供的 UI 触发操作的正确方法。

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

  ...

  <action android:id="@+id/action_global_editProfileFragment"
      app:destination="@id/editProfileFragment"/>

</navigation>

Safe Args 与全局操作一起使用时,这将生成一个MainNavDirections包含您的操作的类。

这意味着您完成的点击侦听器将如下所示:

headerOfNavDrawer.setOnClickListener{
    // Use the Kotlin extension in the -ktx artifacts
    val navController = findNavController(R.id.nav_host_fragment)

    // Now use the generated Directions class to navigate to the destination
    navController.navigate(MainNavDirections.actionGlobalEditProfileFragment())
}
于 2020-02-09T19:29:33.817 回答