我有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)
}
}
我最终用几行代码找到了解决方案:我将注释掉替换掉的代码部分。
说明
因此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)
}