Использовать поведение кнопки возврата по умолчанию с компонентом навигации android - PullRequest
0 голосов
/ 06 августа 2020

Я использую в своем приложении график навигации. У меня нижняя панель навигации. В моем основном действии я смотрю на свои навигационные компоненты следующим образом:

setContentView(R.layout.activity_main)
val navView: BottomNavigationView = findViewById(R.id.nav_view)

val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(setOf(
        R.id.navigation_artist_list, R.id.navigation_dashboard, R.id.navigation_notifications))
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)

Это запускает мои навигационные компоненты, которые раздувают настройку фрагментации в R.id.navigation_artist_list.

От наблюдателя в этом фрагмент Я перехожу к другому фрагменту с помощью:

viewModel.selectedAlbum.observe(this, Observer { artist ->
    val action = HomeFragmentDirections.actionNavigationHomeToAlbumFragment(artist)
    root.findNavController().navigate(action)
})

Однако ни один из доступных механизмов навигации не работает должным образом. Кнопка «Назад» просто обновляет фрагмент и снова заполняет список во фрагменте. Кнопка «Назад» на панели действий полностью игнорируется.

Нужно ли мне делать что-то еще для правильного поведения кнопки «Назад», чтобы go вернуться к предыдущему фрагменту?

видео проблемы

1 Ответ

0 голосов
/ 06 августа 2020

В вашем MainActivity переопределите метод onSupportNavigateUp() для вызова navigateUp() в контроллере навигации

override fun onSupportNavigateUp(): Boolean {
    val navController = this.findNavController(R.id.nav_host_fragment)
    return navController.navigateUp()
}
...