#android #android-fragments #android-navigation #android-drawer
Вопрос:
Я внедряю навигационный ящик с помощью androidx.navigation.ui.
Основываясь на шаблоне активности навигационного ящика Android Studio, когда я вставляю onDrawerSlide, который работает в соответствии с анимацией ящика, идентификаторы верхнего уровня, установленные в конфигурации Appbarconfigation, игнорируются, и кнопка навигации (не значок ящика, а кнопка «Назад») будет отображаться во фрагменте, не относящемся к верхнему уровню. Даже если я нажму на нее, ящик каждый раз будет выдвигаться.
val drawerLayout: DrawerLayout = binding.drawerLayout
val navView: NavigationView = binding.navView
val navController = findNavController(R.id.nav_host_fragment_content_main)
//-- START : It will come out a drawer menu regardless of the fragment stack
class LocalActionBarDrawerToggle : ActionBarDrawerToggle(this,
drawerLayout,
binding.appBarMain.toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close) {
override fun onDrawerSlide(drawerView: View, slideOffset: Float) {
// do something
super.onDrawerSlide(drawerView, slideOffset)
}
}
val drawerToggle = LocalActionBarDrawerToggle()
drawerLayout.addDrawerListener(drawerToggle)
drawerToggle.syncState()
//-- END
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_home
), drawerLayout
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
Для фрагментов не верхнего уровня кнопка навигации-это кнопка «Назад», а не значок ящика, поэтому я думаю, что это просто переопределяет управление движением. Пожалуйста, дайте мне несколько советов.