【发布时间】:2019-07-09 04:49:25
【问题描述】:
在我的应用中,我有一个用于显示数据的片段,以及一个用于更改应用中某些设置的设置活动。当我通过导航抽屉进入设置活动,然后返回主屏幕(不更改设置)时,应用程序崩溃并出现以下异常:
java.lang.IllegalStateException: Fragment NowWeatherFragment{b7914f8 (0e67ee0d-8776-45b5-9fd7-ee69841c31d1)} not attached to a context
这似乎是在 API 调用的响应之后发生的,并且从 SO 的另一个答案中可以很好地解释为什么,但我尝试过的任何方法都无法解决这个问题。
我已经看到了其他几个关于此的问题,但我无法将它们的答案应用到我的情况。我尝试检查 isAttached() 并没有帮助,以及对片段进行空检查,但它仍然得到相同的异常
而不是发布所有的课程,其中一些很长,这里是 github repo。它应该是相当轻量级的,并且很容易通过 Android Studio 在设备上运行 https://github.com/jollygreenegiant/SimpleWeather
我希望应用程序会像启动时一样返回主屏幕并显示天气数据。
这是完整的堆栈跟踪:
java.lang.IllegalStateException: Fragment NowWeatherFragment{b7914f8 (0e67ee0d-8776-45b5-9fd7-ee69841c31d1)} not attached to a context.
at androidx.fragment.app.Fragment.requireContext(Fragment.java:765)
at androidx.fragment.app.Fragment.getResources(Fragment.java:829)
at com.jggdevelopment.simpleweather.fragments.NowWeatherFragment.setupViews(NowWeatherFragment.java:82)
at com.jggdevelopment.simpleweather.fragments.NowWeatherFragment$3.onSharedPreferenceChanged(NowWeatherFragment.java:152)
at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:612)
at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:598)
at com.jggdevelopment.simpleweather.fragments.MasterFragment.updateConditions(MasterFragment.java:263)
at com.jggdevelopment.simpleweather.services.WeatherAPIUtils$2.onResponse(WeatherAPIUtils.java:92)
at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7319)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
【问题讨论】:
标签: java android android-fragments