【发布时间】:2018-11-19 10:23:03
【问题描述】:
我在空闲时间实现了一个 android 应用程序(在 Kotlin 中,但这与问题无关),我尝试使用 android jetpack 和新库。我有一个带有导航抽屉的活动。我尝试关注sample sunflower app。它在主活动中使用以下组合来启用导航抽屉背后的逻辑:
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
setSupportActionBar(findViewById(R.id.toolbar))
setupActionBarWithNavController(navController, appBarConfiguration)
此代码的注意事项:当在导航抽屉中单击时,它会自动导航到正确的片段,然后关闭抽屉并保持它们处于选中状态等所有样板代码。这很整洁,也很有效。据我了解,抽屉式导航菜单项的 ID 必须与导航图中片段的 ID 相匹配,这样它们才能相互连接。
我遇到的问题:当我使用导航抽屉转到导航图的起始片段以外的任何片段时,它将显示一个后退按钮而不是汉堡包项。这不是我所期望的,我希望它仍然是汉堡包项目,因为导航抽屉用于在同等级别的视图之间导航而不是相互嵌套,对吧?如果我通过单击该片段中的元素(例如列表 -> 详细信息)导航到任何片段的子片段,我希望有一个后退按钮,但如果我使用导航抽屉导航则不会。
现在我将这个问题追溯到AppBarConfiguration 构建器,它读取构造函数并使用导航图The NavGraph whose start destination should be considered the only top level destination.,我可以通过覆盖AppBarConfiguration 返回不同的顶级目的地,而不仅仅是导航图。
但是我的问题是,为什么默认会有这种行为?它是一个错误吗?如果我覆盖它,我会违反谷歌的一些设计指南吗?导航抽屉中的每个元素不应该与我期望的一样吗?是否有针对我想要做的其他解决方案?
【问题讨论】:
标签: android navigation-drawer android-navigation android-jetpack