以前增長一個判斷isAdded(),兩外說這個異常解決辦法的有http://stackoverflow.com/questions/6870325/android-compatibility-package-fragment-not-attached-to-activityhtml
這個是針對另一種狀況下的解決方式。java
二、在使用Fragment保存參數的時候,多是由於須要保存的參數比較大或者比較多,這種狀況下頁會引發異常。好比代碼android
[java] view plaincopyapp
Bundle b = new Bundle(); ide
b.putParcelable("bitmap", bitmap2); 函數
imageRecognitionFragment.setArguments(b); this
[java] view plaincopyspa
Bundle b = new Bundle(); .net
b.putParcelable("bitmap", bitmap2); code
imageRecognitionFragment.setArguments(b);
設置好參數,而且添加hide(),add(),方法以後,須要commit(),來實現兩個Fragment跳轉的時候,這種情形下參數須要進行系統保存,可是這個時候你已經實現了跳轉,系統參數卻沒有保存。此時就會報
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
異常。分析緣由:你並不須要系統保存的參數,只要你本身設置的參數可以傳遞過去,在另一個Fragment裏可以順利接受就好了,如今android裏提供了另一種形式的提交方式commitAllowingStateLoss(),從名字上就能看出,這種提交是容許狀態值丟失的。到此問題獲得完美解決,值的傳遞是你本身控制的。
這裏也說一下另一個問題,bitmap 也能夠經過Bundle傳遞的,使用putParacelable就能夠了
另:
public final boolean isAdded()
若是該Fragment對象被添加到了它的Activity中,那麼它返回true,不然返回false。