今天主要说一下出现fragment重影的问题。
Activity 中的 onSaveInstanceState() 里面有一句super.onSaveInstanceState(outState);,Google 对于这句话的解释是 “Always call the superclass so it can save the view hierarchy state”,大概意思是“总是执行这句代码来调用父类去保存视图层的状态”。通过注释掉这句话,这样主 Activity 因为种种原因被回收的时候就不会保存之前的 fragment state,也可以成功解决重叠的问题。
注意:要把这个方法写在你的homeActivity里面,也就是你写底部按钮和加载fragment的页面
如图:这样就可以解决这个问题了。
//解决fragment
@SuppressLint("MissingSuperCall")
@Override
public void onSaveInstanceState(Bundle outState) {
//如果用以下这种做法则不保存状态,再次进来的话会显示默认的tab
// super.onSaveInstanceState(outState);
}