快速解决fragment叠加问题

来源:互联网 发布:中国知网数据库检索 编辑:程序博客网 时间:2024/04/30 03:25

在开发中,我们会经常遇到fragment的重叠问题,那么fragment重叠的原因是什么呢?

形成原因:

当系统内存不足,Fragment 的宿主 Activity 回收的时候,Fragment 的实例并没有随之被回收。

Activity 被系统回收时,会主动调用 onSaveInstance() 方法来保存视图层(View Hierarchy),所以当 Activity 再次被重建时,

之前被实例化过的 Fragment 依然会出现在 Activity 中,此时的 FragmentTransaction 中的相当于又再次 add 了 fragment 进去的,

hide()和show()方法对之前保存的fragment已经失效了,所以就出现了重叠。

bug重现:

在Android Studio原代码中不影响在整体代码逻辑的情况下稍微改动代码,比如加个无关紧要的注释,重新部署app。这样就会重现

叠加的bug。

解决办法:

@Override    public void onAttachFragment(Fragment fragment) {        //super.onAttachFragment(fragment);        if(homeFragment == null && fragment instanceof HomeFragment){            homeFragment = fragment;        }        if(cartFragment == null && fragment instanceof CartFragment){            cartFragment = fragment;        }        if(myFragment == null && fragment instanceof MyFragment){            myFragment = fragment;        }    }

在activity中重写以上方法。

原创粉丝点击