java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity異常。
一:? ? ? java.lang.IllegalStateException: Fragment has not been attached yet.
?? 調(diào)用資源之前判斷Fragment是否Attach到Activity,使用isAdded()方法。
出現(xiàn)該異常,是因為Fragment的還沒有Attach到Activity時,調(diào)用了如getResource()等,需要上下文Content的函數(shù)。解決方法,就是等將調(diào)用的代碼寫在OnStart()中。網(wǎng)上還有幾處這樣的參考:http://stackoverflow.com/questions/1091924 0/fragment-myfragment-not-attached-to-activity回答的主要是在調(diào)用
getResources().getString(R.string.app_name);
getResources().getString(R.string.app_name);
之前增加一個判斷isAdded(),兩外說這個異常解決辦法的有http://stackoverflow.com/questions/6870325/android-compatibility-package-fragment-not-attached-to-activity
*****、在使用Fragment保存參數(shù)的時候,可能是因為需要保存的參數(shù)比較大或者比較多,這種情況下頁會引起異常。比如代碼
Bundle b = new Bundle();
b.putParcelable("bitmap", bitmap2);
imageRecognitionFragment.setArguments(b);
設(shè)置好參數(shù),并且添加hide(),add(),方法之后,需要commit(),來實現(xiàn)兩個Fragment跳轉(zhuǎn)的時候,這種情形下參數(shù)需要進(jìn)行系統(tǒng)保存,但是這個時候你已經(jīng)實現(xiàn)了跳轉(zhuǎn),系統(tǒng)參數(shù)卻沒有保存。此時就會報二:
java.lang.IllegalStateException: Can not perform this action after
onSaveInstanceState異常。分析原因:你并不需要系統(tǒng)保存的參數(shù),只要你自己設(shè)置的參數(shù)能夠傳遞過去,在另外一個Fragment里能夠順利接受就行了,現(xiàn)在android里提供了另外一種形式的提交方式commitAllowingStateLoss(),從名字上就能看出,這種提交是允許狀態(tài)值丟失的。到此問題得到完美解決,值的傳遞是你自己控制的。
這里也說一下另外一個問題,bitmap 也可以通過Bundle傳遞的,使用putParacelable就可以了