【Android】關於Fragment異常的問題(java.lang.IllegalStateException: Fragment not attached to Activity)

Fragment還沒有Attach到Activity時,調用了如getResource()等,需要上下文Content的函數。
造成crash



1.描述
關於Fragment(XXFragment) not attached to Activity 異常。出現該異常,是因為Fragment的還沒有Attach到Activity時,調用瞭如getResource()、getString()等,需要上下文Content的函數。
2.原因
往往這種問題發生在線程中,尤其是網絡請求線程中。因為父Activity可能無意中destory掉,而線程還在執行,此時在線程中的操作獲取不到父Activity的上下文Content,疑似造成內存洩漏。
3.解決方法有二:
-將調用的代碼寫在OnStart()中。  (需要調整之前寫過的生命週期,變動太大故不採用)
-在getResources()之前加入isAdded()判斷。(在getResources()之前加入isAdded()判斷)

@Override
    public void onStart() {
        super.onStart();
        if (isAdded()) {//判斷Fragment已經依附Activity
            TextView mText01 = getResources().getString(R.string.app_name);
        }
    }


沒有留言:

張貼留言