2

当我从启动器图标打开我的应用程序时,所有导航和操作栏按钮都可以正常工作。但是,当我从显式深层链接访问应用程序时,我的 ActionBar 会感到困惑。

我的主要导航是:

-> [TaskListFragment] -> [TaskDetailFragment]

通过启动器图标打开时,后退按钮正确显示: 正确的行为

在我的应用程序中,您可以为每个任务创建一个警报,因此当警报响起并且用户单击通知时,流程是:

-> [TaskDetailFragment]

然后,它显示了错误的按钮: 错误行为 单击抽屉图标,它返回到[TaskListFragment]。行为是正确的,但 ActionBar 图标不正确。

这就是我创建深层链接的方式:

NavDeepLinkBuilder(context)
            .setGraph(R.navigation.nav_graph)
            .setDestination(R.id.taskDetailFragment)
            .setArguments(arguments)
            .createPendingIntent()

这是GitHub 上的完整代码。

MainActivity与所有导航样板。

还有我的导航图

我还尝试了几个基本实现,例如 Google 的向日葵和架构组件示例,但均未成功。

4

1 回答 1

0

一旦我认为这是库中的错误,我就打开了问题跟踪器。

实际上,问题是我正在使用 aActionBarDrawerToggle来制作自定义抽屉动画,并且基于回复该问题的开发人员:

“[...] Navigation 文档建议根本不使用 ActionBarDrawerToggle,因为过渡是为您处理的”

导航文档中:

注意:使用 NavigationUI 时,顶部应用栏助手会随着当前目的地的变化自动在抽屉图标和向上图标之间转换。您不需要使用 ActionBarDrawerToggle。

一旦我需要ActionBarDrawerToggle自定义动画,我就无法删除它。要解决此问题,我需要先使用ActionBarDrawerToggle定义调用我的抽屉设置,然后调用导航设置方法,例如NavigationUI.setupActionBarWithNavController().


TL;博士

如果您使用ActionBarDrawerTogglewith Jetpack Navigation,请确保您设置了ActionBarDrawerTogglebefore 调用Navigation方法。

于 2019-06-07T11:33:12.863 回答