如何使用导航组件配置DrawerLayout

问题描述 投票:0回答:1

我有2个片段,我想在其中使用汉堡包图标正确访问DrawerLayout。

HomeFragmentFavoritesFragment

发生的情况是,当我单击汉堡包图标并选择“收藏夹”菜单项时,它导航到“收藏夹片段”,但是汉堡包图标变为后退箭头。

我想在两个片段上显示汉堡包图标。

这是我在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)
        }
    }

Home FragmentFavorites Fragment

android-fragments kotlin navigation-drawer drawerlayout android-jetpack-navigation
1个回答
0
投票

我最终用几行代码找到了解决方案:我将注释掉替换掉的代码部分。

说明

因此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)
}

FavoritesFragment

© www.soinside.com 2019 - 2024. All rights reserved.