主界面Activity中多個(gè)Fragment使用show hide的方式切換酿秸。梗掰、
當(dāng)手機(jī)內(nèi)存不足嵌言、屏幕旋時(shí)Activity被回收、重建愧怜。fragment也會(huì)被系統(tǒng)保存和恢復(fù)。但是我們?cè)贏ctivity中保存的fragment的引用已經(jīng)變?yōu)閚ull妈拌,若此時(shí)創(chuàng)建新的Fragment則會(huì)出現(xiàn)重疊的問題拥坛。
解決辦法:
創(chuàng)建Fragment的的時(shí)候帶上一個(gè)tag
Activity onCreate的時(shí)候先使用findViewByTag檢查是否已存在想要的Fragment蓬蝶,如果沒有再創(chuàng)建。
protected void onCreate(Bundle savedInstanceState) {
//解決fragment重疊
FragmentTransaction transaction = getFragmentManager().beginTransaction();
mainFragment = (MainFragment)getFragmentManager().findFragmentByTag(FRAGMENT_TAG+0);
messageRecordFragment = (MessageRecordFragment)getFragmentManager().findFragmentByTag(FRAGMENT_TAG+1);
contactFragment = (ContactFragment)getFragmentManager().findFragmentByTag(FRAGMENT_TAG+2);
mySpaceFragment = (MySpaceFragment)getFragmentManager().findFragmentByTag(FRAGMENT_TAG+3);
transaction.commitAllowingStateLoss();
}