【问题标题】:IllegalStateException - Fragment support libraryIllegalStateException - 片段支持库
【发布时间】:2012-08-10 11:33:00
【问题描述】:

我的应用程序在某些用户设备上不断崩溃,在 Activity onStart 方法中出现以下异常:

Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:541)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:525)
at android.support.v4.app.DialogFragment.show(DialogFragment.java:123) 

我无法在我的模拟器中本地重现此错误。我在stackoverflow上发现了一些关于这个问题的问题: herehere

我已经尝试了建议的解决方案,即在 onSaveInstance 中不允许在片段或活动中使用空包。

但是问题仍然存在。这是我收到的唯一一份崩溃报告,而且我不断收到它。

有人有可行的解决方案吗?

【问题讨论】:

    标签: android illegalstateexception


    【解决方案1】:

    我已经解决了这个问题

    在此处查看我的答案以获取代码:"Can not perform this action after onSaveInstanceState" - why am I getting this exception from my activity's onResume method?

    到目前为止没有更多的 IllegalStateException。

    【讨论】:

      【解决方案2】:

      我使用this workaround解决了这个问题,即将代码放入Activity中的方法onPostResume()函数中

      【讨论】:

      • 投反对票:onPostResume 不适用于 android.support.v4.app.Fragment
      • @Loda 它在 android.support.v4.app.FragmentActivity 中,而不是 Fragment
      • 否,因为我在 onPostResume 中从后台弹出时遇到此异常,即这不是修复。
      【解决方案3】:

      Read This Article.

      还有,

      This one.

      了解问题后,继续进行适当的更改:

      弄清楚为什么您的交易发生在您的 onResume 状态之外。为什么这些事情在不应该发生的时候发生。为什么要根据应用程序的生命周期手动添加和删除片段,而不是在用户请求时。您可能需要在 onCreate() 或用户调用某些内容时需要一次。但是你为什么一开始就在 onResume() 中惹他们呢?不要那样做。

      如果您将所有 .commit() 更改为 .commitAllowStateLoss(),那么崩溃就会消失。但是,你最好不要那样做。你最好确保你永远不会改变你的片段,除非应用程序完全上线。有时这意味着永远不要从 OnActivityResult() 加载片段,而是标记为在 onPostResume() 中运行,并避免在异步线程中执行 UI 更改,这些更改错误地认为您不能同时终止活动。

      如果您只想整理所有内容,.commitAllowStateLoss() 会这样做。如果你想做正确的事,请确保在事物死亡后不要摆弄你的碎片。

      我认为是最新形式的 Android 大约奥利奥之一,为了避免这个恼人的错误,改变了这一点。我的回答似乎有点含糊,但这是因为错误在范式中。您完全可以使用各种代码元素并且相当常规地实现这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多