Android: Идентификаторы верхнего уровня игнорируются, и меню выдвижных ящиков появляется каждый раз, когда задан параметр onDrawerSlide

#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)
 

Для фрагментов не верхнего уровня кнопка навигации-это кнопка «Назад», а не значок ящика, поэтому я думаю, что это просто переопределяет управление движением. Пожалуйста, дайте мне несколько советов.