activity中切换fragment的时候出现fragment重叠,残留的问题
fragment出现重叠是因为activity销毁重构的时候会执行onSaveInstanceState保存信息以便重构activity的时候恢复信息。
在切换横竖屏或者因为内存等原因acitvity销毁之后fragment就被保存下来,activity重构的时候把前一个fragmenet恢复后,后一个activity又创建了fragment,所以会导致2个fragment重叠。
网上有很多方法来处理这个问题,销毁的时候注释掉onSaveInstanceState中的方法,即不保存信息。还有保存的时候把fragment记一下,然后重构的时候判断有没有相应的fragment然后有的话取出来。但是我还找到了一个更加好的方法,只需要一行代码即可:
activity我继承的是AppCompatActivity,AppCompatActivity继承的是FragmentActivity,在FragmentActivity中的onSaveInstanceState方法中有对fragment进行了保存,所以我们想要保存别的信息而不保存fragment的信息,只要对这部分进行处理即可:
重写onSaveInstanceState:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("android:support:fragments", null);
}
参考文章:
https://blog.csdn.net/jianjiankedizai/article/details/82384744