0

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

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

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

4

2 回答 2

1

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

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

于 2015-07-20T08:50:00.750 回答
0

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

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

这样,如果调用的活动在顶部,它不会被销毁(从而保留 FragmentManager 的后台堆栈),但onNewIntent(Intent intent)会触发该方法,让您对其做出反应。这在 FLAG_ACTIVITY_CLEAR_TOP.

于 2015-07-20T09:42:22.697 回答