使用片段中的处理程序时出现非法状态异常
Posted
技术标签:
【中文标题】使用片段中的处理程序时出现非法状态异常【英文标题】: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 bc91d8cf not attached to Activity
这是我的代码截图:
【问题讨论】:
你把代码放在哪里了?在片段的 onCreate 内? onStart() 内 尝试将代码移至 onAttach 也许在 onDestroy 中取消你的回调? 【参考方案1】:当你在片段中做某事时,添加这个方法来检查是否附加。
if (isAdded())
// TODO Your Stuff
【讨论】:
【参考方案2】:据了解,最可能的原因是 getActivity() 返回 null。这可能是因为当计时器完成时,片段不再附加。试试这个:
Activity activity=getActivity()
if(activity!=null&&isAdded()))
// ur code here
这样它不会崩溃,但它也可能不适合您的目的。
【讨论】:
是的,这可以防止崩溃。但是,不完全是我需要的。 很可能您需要重新考虑您的工作流程,因为如果获取活动为空,您将无能为力。以上是关于使用片段中的处理程序时出现非法状态异常的主要内容,如果未能解决你的问题,请参考以下文章
在 fragmenStatePagerAdapter 的嵌套片段中,非法状态异常-指定的子级已经有父级