亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java.lang.IllegalStateException:API 響應后片段未附加到上下文

java.lang.IllegalStateException:API 響應后片段未附加到上下文

慕尼黑8549860 2023-03-17 10:19:11
在我的應用程序中,我有一個用于顯示數據的片段,以及一個用于更改應用程序中某些設置的設置活動。當我通過導航抽屜轉到設置活動,然后返回主屏幕(不更改設置)時,應用程序崩潰并出現以下異常:java.lang.IllegalStateException: Fragment NowWeatherFragment{b7914f8 (0e67ee0d-8776-45b5-9fd7-ee69841c31d1)} not attached to a context它似乎是在 API 調用響應之后發生的,并且有一個關于 SO 的另一個答案的合理解釋,但我嘗試過的任何事情都無法解決這個問題。我已經看到了其他幾個與此相關的問題,但我無法將這些問題的答案應用到我的情況中。我嘗試檢查 isAttached() 但這并沒有幫助,也對片段進行了空檢查,但它仍然遇到相同的異常與其發布所有課程,有些課程很長,這里是 github 存儲庫。它應該是相當輕量級的,并且很容易通過 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)
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您需要調用unregisterOnSharedPreferenceChangeListener()您的onDestroyView()(的鏡像onCreateView(),這是您注冊偵聽器的地方)。

就像現在一樣,您正在泄漏您的 Fragment,因為它SharedPreferences持有對您的偵聽器的強烈引用,onSharedPreferenceChanged在您的 Fragment 的視圖被銷毀后繼續將回調發送到它的井,導致您收到錯誤消息。


查看完整回答
反對 回復 2023-03-17
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

Fragment生命周期過于繁雜


Activity myactivity = getActivity(); 

if (isAdded() && myactivity != null) {

...

}


查看完整回答
反對 回復 2023-03-17
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號