Хотя ваш ответ мог бы стать обходным путем, я надеялся на решение, которое автоматизирует этот процесс. Это потребует отслеживания фрагментов, чтобы знать, какое действие выполнить. С этим я потеряю преимущества Навигационной Арки.
я есть следующая активность
class MainActivity : AppCompatActivity() {
private lateinit var drawerLayout: androidx.drawerlayout.widget.DrawerLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
drawerLayout = drawer_layout
val navController = Navigation.findNavController(this, R.id.fragment_main_navHost)
setSupportActionBar(toolbar)
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
navView_main.setupWithNavController(navController)
}
override fun onSupportNavigateUp(): Boolean {
return NavigationUI.navigateUp(drawerLayout,
Navigation.findNavController(this, R.id.fragment_main_navHost))
}
override fun onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
}
}
который, как вы можете видеть, связан с графиком навигации, а я использую навигационный ящик. Когда я перемещаюсь по элементам в ящике, я хочу сохранить значок гамбургера и изменить его на кнопку «вверх / назад» только тогда, когда я нажимаю на элемент в фрагменте или всплывающем окне, например, и гарантирую, что поведение системы отражает то, что пользователь ожидает на основе отображаемого значка. Это возможно