【问题标题】:How to configure DrawerLayout using Navigation Components如何使用导航组件配置 DrawerLayout
【发布时间】:2020-02-21 09:55:02
【问题描述】:

我有 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)
        }
    }

【问题讨论】:

    标签: android-fragments kotlin navigation-drawer drawerlayout android-jetpack-navigation


    【解决方案1】:

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

    说明

    所以 AppBarConfiguration() 需要 2 个参数,topLevelDestinationIds 和一个抽屉布局,在这种情况下,我有 2 个顶级目的地,所以我将它们放在一个集合中。

    我没有将抽屉布局传递给 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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多