来自通知的Android活动 - FragmentManager backstack为零

时间:2015-07-20 08:16:40

标签: android notifications android-notifications back-stack fragment-backstack

我四处搜寻但找不到答案。 我的应用程序基于片段,MainActivity是入口点。当用户单击通知时,我会使用PendingIntent触发所需的行为,该MainActivity包含需要调用的片段的特定标志。

当我需要的片段已经显示时,我的问题就出现了。通过PendingIntent输入fragmentManager.getBackStackEntryCount()后,Otto将返回零。我想这是因为活动是一个不同于我已经运行的实例。然后再次调用相同的片段,这会弄乱我的UI(并且可能会因为HTTP_Request2总线已经注册而崩溃)。

我的问题是:当通知触发活动时,检测正在运行的应用程序状态(即显示哪个片段)的最佳方法是什么?感谢。

2 个答案:

答案 0 :(得分:1)

我猜你可以用FragmentManager课做到这一点。 你有几个有趣的方法。例如,findFragmentByTag(String tag)使您能够知道是否存在具有特定TAG的片段。

另外,你确定你没有重新创建一个新的活动(在当前的活动之上)吗?

答案 1 :(得分:0)

感谢@Gordak的建议,我能够找出问题所在。我需要的是我的(待定)意图中的标志组合:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);

这样,如果被调用的活动在顶部,它将不会被销毁(从而保留FragmentManager的backstack),但是方法onNewIntent(Intent intent)将被触发,让你对它作出反应。这在文档中有描述 FLAG_ACTIVITY_CLEAR_TOP