У меня проблема с реализацией компонента "Макет ящика с навигацией".
Я создал макет выдвижного ящика, используя функцию включения навигационного ящика Android Studio.
На самом деле, все в порядке, если целью пунктов меню является изменение фрагментов или действий (например, программ, песен, настроек и т. Д. На скриншоте), определенных в XML навигации.
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = 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.
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_user_programs_list,
R.id.nav_user_songs_list,
R.id.nav_user_settings,
R.id.nav_user_legal_notices,
R.id.nav_games
), drawerLayout
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
Однако я также хотел бы выполнить действие выхода из системы в пункте меню выхода без запуска другого фрагмента или действия:
У меня получилось вот так:
navView.setNavigationItemSelectedListener {
if (it.itemId == R.id.nav_logout) {
logoutUser()
}
true
}
Но моя проблема: с этим методом все остальные элементы, которые раньше работали (изменение фрагмента), больше не работают, потому что он вызвал NavigationItemSelectedListener, который в этом случае ничего не делает.
Есть ли решение объединить оба метода? :
- Изменение фрагмента с макетом ящика по умолчанию в студии Android
- Использование NavigationItemSelectedListener только для выполнения действия только с одним элементом меню.
Надеюсь, это достаточно ясно. Не сомневайтесь, если вам нужна точность.
Большое тебе спасибо.