【问题标题】:Fragment IllegalStateException片段 IllegalStateException
【发布时间】:2016-08-11 20:57:52
【问题描述】:

我曾经在我的应用程序中遇到过这个异常,现在我不明白这是什么,也无法重新创建它。

谁能帮我解决这个问题。提前致谢

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
   at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1489)
   at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:584)
   at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:169)
   at com.explorelife.UI.PropertyDetailsScreen.onBackPressed(PropertyDetailsScreen.java:310)
   at com.explorelife.UI.PropertyDetailsScreen.onClick(PropertyDetailsScreen.java:716)
   at android.view.View.performClick(View.java:4785)
   at android.view.View$PerformClick.run(View.java:19884)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5343)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

【问题讨论】:

标签: android android-fragments illegalstateexception


【解决方案1】:

View.performClickonSaveInstanceState 之后处理。您似乎在点击时完成了活动。如果您快速单击两次查看,我们可以重现崩溃。

【讨论】:

  • 我按你说的试了几次,但我仍然无法重现它.....如果这是问题,你能告诉我如何解决它
  • 在您的情况下,您可能只是在第一次处理期间删除 OnClickListener:public void onClick(View v) { v.setOnClickListener(null); ... }
【解决方案2】:

看起来您正试图在onCreate()onResumeonStartActivity 方法之一中提交fragmentTransactionReplace FragmentRemove Fragment,这导致illlegaStateException

【讨论】:

  • 我只是打电话给onBackPressed()。实际上我有一个Fragment 用于显示图像,它仅在我双击图像时显示。而且我还覆盖了ActivityonBackPressed() 以删除该片段,如果attached() 并且如果不调用super.onBackPressed() 所以,我认为我不会在其中任何一个中调用fragmentTransaction跨度>
  • 这可能是您在更改活动状态时committing fragment transaction 的问题。所以尝试根据您的要求删除其他功能中的片段。
【解决方案3】:

当 onBackPressed() 在 onSaveInstanceState() 之后调用时会发生这种情况,即当移动设备被锁定然后在后台调用 onBackPressed() 一个 hack 被覆盖 onSaveInstance() 并在该方法中添加 onBackPressed() 并且它起作用了对我来说很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多