【问题标题】:Illegal State Exception while using Handler from Fragment使用片段中的处理程序时出现非法状态异常
【发布时间】:2018-10-04 14:45:52
【问题描述】:
java.lang.IllegalStateException: 
  at android.support.v4.app.Fragment.startActivity (Unknown Source)
  at placecom.learnenglish.appintro.b$1.run (Unknown Source)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:186)
  at android.app.ActivityThread.main (ActivityThread.java:6509)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:914)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:804)

好的,所以这个问题现在已经占用了我超过 24 小时的时间。我知道这是一个小问题,我做错了什么。 Firebase crashlytics 还在下面说,可能出了什么问题?有人可以帮忙吗?

Fatal Exception: java.lang.IllegalStateException
Fragment b{c91d8cf} not attached to Activity

这是我的代码截图:

【问题讨论】:

  • 你把代码放在哪里了?在片段的 onCreate 内?
  • onStart() 内
  • 尝试将代码移至 onAttach
  • 也许在 onDestroy 中取消你的回调?

标签: android android-activity fragment handler android-fragmentactivity


【解决方案1】:

当你在片段中做某事时,添加这个方法来检查是否附加。

if (isAdded()) {
// TODO Your Stuff
}

【讨论】:

    【解决方案2】:

    据了解,最可能的原因是 getActivity() 返回 null。这可能是因为当计时器完成时,片段不再附加。试试这个:

    Activity activity=getActivity()
    if(activity!=null&&isAdded())){
      // ur code here
    }
    

    这样它不会崩溃,但它也可能不适合您的目的。

    【讨论】:

    • 是的,这可以防止崩溃。但是,不完全是我需要的。
    • 很可能您需要重新考虑您的工作流程,因为如果获取活动为空,您将无能为力。
    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    相关资源
    最近更新 更多