天天看點

Android fragment 重疊問題

 最近在做項目的時候,遇到了fragment重疊的問題。具體的情況是,我在一個fragment中,通過add的到FragmentTransaction的方式,又放了四個子fragment allFrg,movieFrg,newsFrg,otherFrg。當我點選allFrg對應tab鍵時,通過hide隐藏其他三個fragment,通過show來顯示allFrg。正常情況下顯示是對的,問題就在我切換他其他的app,操作一會之後,再回到目前的app,有很大幾率會出現fragment重疊的現象。

        通過搜集相關資料,我找到了原因,在我切換到其他app的時候,fragment所在activity已經被銷毀。并且通過

?

1 2 3 4 5 6

@Override

public

void

onSaveInstanceState(Bundle outState) {  

// TODO Auto-generated method stub        

Log.v(

"LH"

"onSaveInstanceState"

+outState);  

super

.onSaveInstanceState(outState);  

}

這個方法儲存了相關的資料。

         當我再次回到這個app的時候,通過onCreate中的參數savedInstanceState恢複了之前的fragment。此時的FragmentTransaction中的相當于又再次add了fragment進去的,之前儲存的fragment也還在。hide()和show()方法對之前儲存的fragment已經失效了。是以出現了重疊的現象

解決方法:

直接在包含Fragment的Activity中複寫

?

1 2 3 4 5

public

void

onSaveInstanceState(Bundle outState) {  

// TODO Auto-generated method stub       

//Log.v("LH", "onSaveInstanceState"+outState);  

//super.onSaveInstanceState(outState);   //将這一行注釋掉,阻止activity儲存fragment的狀态

}

繼續閱讀