带有错误的ActionBar按钮的Jetpack导航深层链接

时间:2019-05-18 19:03:18

标签: android android-navigation jetpack android-jetpack-navigation

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

我的主要导航是:

-> [TaskListFragment] -> [TaskDetailFragment]

通过启动器图标打开时,后退按钮将正确显示: Correct behavior

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

-> [TaskDetailFragment]

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

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

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

这是GitHub上的完整代码。

MainActivity和所有导航模板。

还有my Navigation Graph

我还尝试了几种基本实现,例如Google的Sunflower和体系结构组件示例,但均未成功。

1 个答案:

答案 0 :(得分:0)

我以为这是库中的错误,就打开了Issue Tracker

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

  

“ [[...]导航文档建议完全不使用ActionBarDrawerToggle,因为过渡是为您处理的”

Navigation docs中:

  

注意:使用NavigationUI时,当当前目标位置更改时,顶部应用程序栏帮助程序会在抽屉图标和向上图标之间自动转换。您不需要使用ActionBarDrawerToggle。

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


TL; DR

如果将ActionBarDrawerToggleJetpack Navigation一起使用,请确保在调用ActionBarDrawerToggle方法之前设置Navigation