当我从启动器图标打开应用程序时,所有的Navigation和ActionBar按钮都可以正常工作。但是,当我从显式深层链接访问应用程序时,我的ActionBar会感到困惑。
我的主要导航是:
-> [TaskListFragment] -> [TaskDetailFragment]
在我的应用中,您可以为每个任务创建一个警报,因此当警报响起并且用户单击通知时,流程为:
-> [TaskDetailFragment]
然后,它显示了错误的按钮: 单击抽屉图标,它返回到[TaskListFragment]。行为正确,但ActionBar图标不正确。
这是我创建深层链接的方式:
NavDeepLinkBuilder(context)
.setGraph(R.navigation.nav_graph)
.setDestination(R.id.taskDetailFragment)
.setArguments(arguments)
.createPendingIntent()
这是GitHub上的完整代码。
MainActivity和所有导航模板。
我还尝试了几种基本实现,例如Google的Sunflower和体系结构组件示例,但均未成功。
答案 0 :(得分:0)
我以为这是库中的错误,就打开了Issue Tracker。
实际上,问题是我使用ActionBarDrawerToggle
来制作自定义抽屉动画,并且基于回复该问题的开发人员:
“ [[...]导航文档建议完全不使用ActionBarDrawerToggle,因为过渡是为您处理的”
注意:使用NavigationUI时,当当前目标位置更改时,顶部应用程序栏帮助程序会在抽屉图标和向上图标之间自动转换。您不需要使用ActionBarDrawerToggle。
自定义动画一旦需要ActionBarDrawerToggle
,就无法删除。要解决此问题,我需要先使用ActionBarDrawerToggle
定义调用抽屉设置,然后再调用导航设置方法,例如NavigationUI.setupActionBarWithNavController()
。
TL; DR
如果将ActionBarDrawerToggle
与Jetpack Navigation
一起使用,请确保在调用ActionBarDrawerToggle
方法之前设置Navigation
。