Fragment重叠

2019-05-06  本文已影响0人  灰色轨迹_e2d8

主界面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();
    }
上一篇下一篇

猜你喜欢

热点阅读