主界面Activity中多个Fragment使用show hide的方式切换。、
当手机内存不足、屏幕旋时Activity被回收、重建。fragment也会被系统保存和恢复。但是我们在Activity中保存的fragment的引用已经变为null,若此时创建新的Fragment则会出现重叠的问题。
解决办法:
创建Fragment的的时候带上一个tag
Activity onCreate的时候先使用findViewByTag检查是否已存在想要的Fragment,如果没有再创建。
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();
}