【问题标题】:Fragment onDetachFragment() illegal state exceptionFragment onAttach Fragment() 非法状态异常
【发布时间】:2019-02-21 10:55:53
【问题描述】:

我曾经在我的 Fragment 中有 onDetach,我只是用它来释放资源(Context = null 和类似的东西)。从那以后,我得到了一些非法状态例外。我删除了 onDetach 并将代码移到了另一个生命周期结束的方法。我仍然得到这个例外,我认为它来自没有更新应用程序的用户,但在 android vitals 中它说它来自最新版本的应用程序。为什么会发生这种情况以及如何处理?或者它只是来自谷歌游戏控制台的错误告诉错误的版本?

java.lang.IllegalStateException:
    at android.support.v4.app.FragmentManagerImpl.detachFragment (FragmentManagerImpl.java)
      or                     .saveAllState (FragmentManagerImpl.java)
      at android.support.v4.app.FragmentController.saveAllState (FragmentController.java)
      at android.support.v4.app.FragmentActivity.onSaveInstanceState (FragmentActivity.java)
      at android.support.v7.app.AppCompatActivity.onSaveInstanceState (AppCompatActivity.java)
      at android.app.Activity.performSaveInstanceState (Activity.java:1337)
      at android.app.Instrumentation.callActivityOnSaveInstanceState (Instrumentation.java:1300)
      at android.app.ActivityThread.callCallActivityOnSaveInstanceState (ActivityThread.java:4131)
      at android.app.ActivityThread.performStopActivityInner (ActivityThread.java:3528)
      at android.app.ActivityThread.handleStopActivity (ActivityThread.java:3588)
      at android.app.ActivityThread.access$1200 (ActivityThread.java:165)
      at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1404)
      at android.os.Handler.dispatchMessage (Handler.java:102)
      at android.os.Looper.loop (Looper.java:150)
      at android.app.ActivityThread.main (ActivityThread.java:5621)
      at java.lang.reflect.Method.invoke (Method.java)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:794)
      at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:684)

【问题讨论】:

  • 哪里有异常?我只能看到堆栈跟踪
  • java.lang.IllegalStateException: ...然后是我上面复制的内容

标签: android fragment illegalstateexception detach


【解决方案1】:

您是否尝试过这种全局解决方案?

    public class MyApp extends Application {

    private static MyApp mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

    public static synchronized MyApp getInstance() {
        return mInstance;
    }
}

【讨论】:

  • 解决什么问题?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多