任何人都请解释一下,如何在导航架构中为抽屉的标题布局定义动作。
现在,我需要设置抽屉标题的点击,并将其设置为:
headerOfNavDrawer.setOnClickListener{
//Here I want to navigate to editProfileFragment
//But For navigation I need an action in nav arch graph.
//Where to put action??
}
任何人都请解释一下,如何在导航架构中为抽屉的标题布局定义动作。
现在,我需要设置抽屉标题的点击,并将其设置为:
headerOfNavDrawer.setOnClickListener{
//Here I want to navigate to editProfileFragment
//But For navigation I need an action in nav arch graph.
//Where to put action??
}
你有两件事需要:
NavController
.根据Navigate to a destination documentation,您可以使用findNavController(R.id.your_nav_host_fragment)
您在 Activity 布局中放置的R.id.nav_host_fragment
位置android:id
。NavHostFragment
为此,导航允许您设置全局操作- 可从图表中的每个目的地获得的操作。这是从您的活动提供的 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())
}