How to Navigate any destination for action of header of drawer in navigation architecture

蹲街弑〆低调 提交于 2021-02-05 11:31:54

问题


Anyone please explain, How to define the action in Navigation architecture for header layout of drawer.

Now, I need to set click of header of drawer and I set it to like this:

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

回答1:


You have two things you need:

  1. A reference to the NavController.

As per the Navigate to a destination documentation, you can use findNavController(R.id.your_nav_host_fragment) where R.id.nav_host_fragment is the android:id you put on your NavHostFragment in your Activity's layout.

  1. An action to go to the edit profile fragment.

For this, Navigation allows you to set up global actions - an action that is available from every destination in your graph. This is the correct way of triggering actions from UI provided by your activity.

<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>

When using Safe Args with a global action, this will generate a MainNavDirections class that has your action on it.

This means your completed click listener would look like:

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())
}


来源:https://stackoverflow.com/questions/60138763/how-to-navigate-any-destination-for-action-of-header-of-drawer-in-navigation-arc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!