У вас есть две вещи, которые вам нужны:
- Ссылка на
NavController
.
Согласно Перейти к документации по месту назначения, вы можете использовать findNavController(R.id.your_nav_host_fragment)
, где R.id.nav_host_fragment
- это android:id
, который вы положили на NavHostFragment
в макете своей деятельности.
Действие go для редактирования фрагмента профиля.
Для этого Navigation позволяет настроить глобальные действия - действие, доступное из любого пункта назначения. в вашем графике. Это правильный способ запуска действий из пользовательского интерфейса, предоставленного вашей деятельностью.
<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())
}