我有2个片段,我想在其中使用汉堡包图标正确访问DrawerLayout。
HomeFragment 和 FavoritesFragment 。
发生的是,当我单击汉堡包图标并选择“收藏夹”菜单项时,它导航到“收藏夹片段”,但是汉堡包图标变为后退箭头。
我想在两个片段上显示汉堡图标。
这是我的MainActivity上的内容:
setupActionBarWithNavController(navController, drawerLayout)
setupWithNavController(binding.navView, navController)
navController.addOnDestinationChangedListener { controller, destination, _ ->
when (destination.id) {
R.id.categoryFragment -> drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
R.id.favoritesFragment -> drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
else -> drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
}
}
答案 0 :(得分:1)
我最终用几行代码找到了解决方案: 我将在已替换的代码部分中留下注释。
说明
因此AppBarConfiguration()接受2个参数,topLevelDestinationIds和抽屉布局,在这种情况下,我有2个顶级目标,因此将它们放在Set中。
我没有将抽屉式布局传递给setupActionBarWithNavController,而是传递了新的Appbar配置。
然后我使onSupportNavigateUp意识到应该考虑到AppBar配置。
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.categoryFragment,
R.id.favoritesFragment
), drawerLayout
)
//setupActionBarWithNavController(navController, drawerLayout)
setupActionBarWithNavController(navController, appBarConfiguration)
override fun onSupportNavigateUp(): Boolean {
//return navigateUp(navController, drawerLayout)
return navigateUp(navController, appBarConfiguration)
}