Я нашел решение
handleOnBackPressed()
метод вызывается только при нажатии кнопки устройства назад.
Интересно, почему ни методы onOptionsItemSelected()
, ни onSupportNavigateUp()
не были вызваны при нажатии кнопки "вверх" на панели инструментов. И ответ я использовал
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration)
в действии по настройке панели инструментов с компонентом навигации.
И это сделало панель инструментов отзывчивой для работы с внутренней навигацией, нажатие кнопки «вверх» не вызвало переопределенных методов в деятельности или фрагментах.
Вместо этого следует использовать
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration)
Это сделает actionBar отзывчивым для навигации, поэтому я могу использовать переопределенные функции onOptionsItemSelected()
и onSupportNavigateUp()
И лучшее место (в моем случае) для добавления пользовательского поведения при нажатии кнопки «вверх» для определенного экрана -
onSupportNavigateUp()
размещенных действий, например
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.mainNavHostFragment)
return when(navController.currentDestination?.id) {
R.id.destinationOfInterest -> {
// custom behavior here
true
}
else -> navController.navigateUp()
}
}
Но стоит сказать, что если вы хотите реализовать собственное поведение непосредственно во фрагменте, ответ @Enzokie должен работать как шарм