【问题标题】:Android Activity from Notification - FragmentManager backstack is zero来自通知的 Android Activity - FragmentManager 后台堆栈为零
【发布时间】:2015-07-20 08:16:39
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        相关资源
        最近更新 更多