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

主页片段收藏夹片段

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

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

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

家庭片段 收藏夹片段

#1楼 票数:1

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

解释

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

我没有将 drawerLayout 传递给 setupActionBarWithNavController,而是传入了新的 Appbar 配置。

然后我让 onSupportNavigateUp 意识到它应该考虑 AppBarconfiguration。

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

收藏夹片段

  ask by Doilio Matsinhe translate from so

未解决问题?本站智能推荐:

1回复

在某些片段中隐藏导航抽屉

我构建了一个具有登录屏幕和主屏幕的应用程序。 我遵循单一活动设计原则。 我已经实现了这样的导航抽屉。 这是我的MainActivity MainActivity布局 我也有两个片段loginFrament和homeFragment现在导航抽屉显示了这个片段,但我希望它只在主屏幕片段中。 检查了一些
1回复

在不使用DrawerToggle的情况下使用DrawerLayout和AppCompatActivity实现向后导航

我一直在搜索和思考如何使用导航抽屉在片段之间来回切换时实现我想要的欲望行为。 实际上,文档说: 在您的应用程序中使用片段时,各个FragmentTransaction对象可能表示应该添加到后台堆栈的上下文更改。 例如,如果通过交换片段在手机上实现主/细节流程,则应确保在详细信息屏幕上按“返回
1回复

带有导航组件的DrawerLayout:非主页顶级目的地的汉堡菜单不会加载抽屉

我正在我的单活动导航组件设置中设置 DrawerLayout,这与此处的指南中概述的非常相似。 这是我的主要活动的代码: 上面,我使用 AppBarConfiguration 来设置三个顶级目的地(subjectFragment、aboutFragment、settingsFragment),其中
1回复

使用FragmentManager和DrawerLayout管理多个层次结构

我有一个使用DrawerLayout的应用程序,抽屉中的每个项目都会加载一个Fragment 。 结构如下: 新闻->新闻故事 图片->画廊->图片 活动->活动 目录->用户类型->用户个人资料 每个顶层都是Drawer一个项目
7回复

DrawerLayout的项目点击-何时是替换片段的正确时间?

我正在开发一个使用导航抽屉图案的应用程序(使用DrawerLayout)。 每次单击抽屉的项目,都会替换主容器中的片段。 但是,我不确定何时是进行片段交易的合适时机? 抽屉开始关闭时? 或者关闭后? 在google的documentaion示例中 ,您可以看到他们在项目单击后立即
1回复

Compose中的底部导航

我想用两个项目创建BottomNavigation 。 每个项目的屏幕都在 Compose 中构建。 我的LeadActivity布局: 导航图: 线索活动: 我的可组合功能: 目前我收到错误: 无法从当前目的地 Destination 找到导航操作/目的地 com.app.android.rate
1回复

DrawerLayout菜单为空白,带有黑色覆盖层-但是单击时,列表将填充

无论如何,问题很难解释。 我的抽屉布局效果很好。 我有两个片段。 第一个片段FragmentMainList从mainactivity中打开,其中显示项目列表。 第二个片段FragmentPlayVideo从列表中itemclick上的第一个片段打开。 当我打开应用程序时,
1回复

导航抽屉项目单击

我有DrawerLayout和NavigationView 。 当我单击导航抽屉中的项目时,有两个片段会发生变化,并且效果很好: 问题是我在抽屉菜单中还有其他几个不是 Fragments 的项目,我无法使它们可点击: 这是代码: 当我设置NavigationItemSelectedListener