如何从Android上的通知栏重新创建片段的向后导航?

如何从Android上的通知栏重新创建片段的向后导航?,android,Android,android文档说,当从正常流程(从主主主活动)的另一种方式启动内部活动时,我可以使用TaskStackBuilder类重新创建反向导航行为,例如当用户单击通知栏时: “通常,当用户从一个活动导航到下一个活动时,系统会以增量方式构建后台堆栈。但是,当用户在自己的任务中使用启动活动的深层链接进入应用程序时,您需要合成一个新的后台堆栈,因为该活动在一个新任务中运行,而没有任何后台堆栈。”- 这没关系,但我有一个应用程序,大部分由片段组成,很少有活动。我想从通知中启动一个内部片段(称之为Fragme

android文档说,当从正常流程(从主主主活动)的另一种方式启动内部活动时,我可以使用TaskStackBuilder类重新创建反向导航行为,例如当用户单击通知栏时:

“通常,当用户从一个活动导航到下一个活动时,系统会以增量方式构建后台堆栈。但是,当用户在自己的任务中使用启动活动的深层链接进入应用程序时,您需要合成一个新的后台堆栈,因为该活动在一个新任务中运行,而没有任何后台堆栈。”-

这没关系,但我有一个应用程序,大部分由片段组成,很少有活动。我想从通知中启动一个内部片段(称之为FragmentC),因此当用户单击通知栏中的通知时,我的应用程序将打开baseActivity,此活动将重新创建FragmentC,作为第一个显示(我想通过传递通知意图中的一些参数并在baseActivity中要求它替换显示的片段来实现这一点),但在此场景中,当用户向后导航到应用程序完成,因为只有一个活动处于活动状态,然后主屏幕显示给用户时,这是错误的,我希望以这种方式重新创建片段流:

用户单击的通知::

然后用户返回:

用户导航回::

用户导航回::

是否有方法从通知(在通知栏中)启动内部片段,并为片段重新创建“正常”的反向导航流,如使用TaskStackBuilder类?或者如何以干净的方式执行

我假设,当我检测到片段是从通知启动时,我可以在baseActivity中手动执行此操作,但这对我来说是脏代码,我知道有一个TaskStackBuilder类可以以更干净的方式执行此操作,但我找不到任何关于如何将其用于片段事务的信息。:S

资料来源:


我创建了一个简单的类来处理导航,但本质上,所有您需要的都是从FragmentManager创建一个事务,添加您通常需要的内容,然后使用addToBackStack来确保您的片段保留在堆栈中

FragmentTransaction ft = FragmentManager.beginTransaction();
ft.addToBackStack(""); //An optional name for this back stack state, or null.
ft.commit();
现在,当您按下后退按钮时,前面的片段将自动出现在前景中

如果您想使用,可以清理堆栈

fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

我认为这是最简单的方法,希望其他人能补充或提出更好的建议。

没关系,但我还需要其他东西。你找到了更干净的方法吗?如果找到了,请分享
   BaseActivity -> FragmentA (Visible)
   (Application Finish, showing home screen)
FragmentTransaction ft = FragmentManager.beginTransaction();
ft.addToBackStack(""); //An optional name for this back stack state, or null.
ft.commit();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);