我有我的应用程序中的某些用户在一个活动中的下列异常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)
我不能在我的模拟器本地重现此错误。 我发现关于在计算器这个问题有几个问题: 在这里和这里
我已经尝试了建议的解决方案,即不允许在onSaveInstance空束既不片段,也不活动。
然而问题依然存在。 这是唯一的崩溃报告我得到了,我得到它的汽车无。
有没有人有一个可行的解决方案?
我已经解决了这个问题
- 升级我的支持LIB修订10
- 使用变通方法张贴在这里: http://code.google.com/p/android/issues/detail?id=23096即。 添加非UI片段onResumeFragments和侦听器回调调用进一步的交易。
这里检查我的答案代码: “之后的onSaveInstanceState无法执行此操作” -为什么当我从我的活动的方法的onResume此异常?
有没有更IllegalStateException异常为止。
我解决了这个使用这个解决办法 ,即把代码放到一个方法onPostResume()
函数在活动
阅读这篇文章。
和,
这个。
一旦问题得到理解,继续适当改变的东西:
弄清楚为什么你的交易,外面发生的一切你的onResume状态。 为什么这些事情发生时,他们不应该。 你为什么要手动添加和关于你的应用程序生命周期,而不是当用户请求除去碎片。 你应该也许需要在OnCreate)一次(或当用户调用的东西。 但是,为什么你跟他们的onResume()摆在首位搞乱? 不要那样做。
如果你改变所有.commit()
来.commitAllowStateLoss()
则崩溃会自行消失。 但是,你就要去不这样做更好。 你最好确保你永远不会改变你的片段除了当应用程序是完全直播。 有时候这意味着永远不会从OnActivityResult加载片段(),而是标记在你的onPostResume()运行,并避免在异步线程执行用户界面的变化是错误地认为你不能杀死在此期间的活动。
如果你只是想填泥料的一切, .commitAllowStateLoss()
会做到这一点。 如果你想这样做的权利,请确保你不与你拨弄片段的东西死了以后。
一个更近的形式的Android大约奥利奥我觉得,改变了这种避免这种恼人的错误。 我的回答似乎有点含糊,但它是因为bug是在范式。 你完全可以打的各种代码元素和相当常规。