导航抽屉视图活动应用程序如何通过汉堡包图标打开抽屉?

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

Android Studio 附带示例应用程序“导航抽屉视图活动”,可以通过新的应用程序对话框创建该应用程序。我尝试按照其中的代码在我的应用程序中实现导航抽屉。一切正常,除了抽屉无法通过点击汉堡图标打开或关闭。

在线搜索,这个答案(和其他)指向

ActionBarDrawerToggle
。但是,示例应用程序“导航抽屉视图活动”不使用
ActionBarDrawerToggle
。因此,问题是,上述示例应用程序中的关键代码是什么,可以通过点击汉堡包图标来打开导航抽屉?

编辑:我注意到一些有趣的事情:在示例应用程序中,汉堡包图标仍然是汉堡包图标。在我的应用程序中(现在带有

ActionBarDrawerToggle
),当我导航到另一个片段时,汉堡包图标会变成后退箭头。但是当我点击它时,我的应用程序不会导航回上一个片段,而只是打开抽屉。我更喜欢示例应用程序的行为。我怎样才能做到这一点?

编辑(再次):我的片段通过

requireActivity().addMenuProvider(...)
提供了一个菜单。这似乎阻止了汉堡图标的点击。如果没有菜单,点击汉堡包图标即可打开抽屉,而无需
ActionBarDrawerToggle
。到目前为止,一切都很好。但是当导航到另一个片段时,汉堡包图标仍然会变成后退箭头。然而现在,点击后退箭头即可导航回上一个片段,而无需打开抽屉。

这种不一致的行为让我发疯。如何实现示例应用程序的行为(并且仍然有我的片段的菜单)?

android navigation-drawer drawerlayout hamburger-menu
1个回答
0
投票

我像这样初始化了 AppBarConfiguration:

appBarConfiguration = AppBarConfiguration(navController.graph, binding.drawerLayout)

而在示例应用程序“导航抽屉视图活动”中,它的初始化如下:

    appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow
        ), drawerLayout
    )

文档解释了其中的差异。对于前者:

导航图的起始目的地应被视为唯一的顶级目的地。当位于图表的起始目的地时,不会显示向上按钮。

后者:

按 ID 划分的目的地集被视为信息层次结构的顶层。在这些目的地时,不会显示向上按钮。

有趣的事实:

AppBarConfiguration
不是构造函数。它是一个静态方法,生成
AppBarConfiguration
类型的对象。严重地。我想知道这是否只是谷歌的一个大笑话......

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