1.原因分析:
Activity长期处于后台,系统由于资源不足,activity被销毁了,fragment状态缓存下来了。由于重新进入activity,重新走了
onCreate方法,导致有一个fragment重新加入,造成fragment重叠
2.解决方法:
(1).通过Tag从前保存的数据中直接去读取
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFragmentManager = getSupportFragmentManager();
if (savedInstanceState != null) {
homeFragment =(HomeFragment)mFragmentManager.findFragmentByTag(fragmentTag[0]);
twoFragment = (TwoFragment) mFragmentManager.findFragmentByTag(fragmentTag[1]);
myFragment = (MyFragment) mFragmentManager.findFragmentByTag(fragmentTag[2]);
}
}
(2).将新建的fragment的删除
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFragmentManager = getSupportFragmentManager();
if (mFragmentManager.getFragments().size() > 0) {
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
Iterator<Fragment> iterator = mFragmentManager.getFragments().iterator();
while (iterator.hasNext()) {
fragmentTransaction.remove(iterator.next());
}
fragmentTransaction.commit();
}
}
(3).不保存fragment状态(没试过)
@Override
protected void onSaveInstanceState(Bundle outState) {
//super.onSaveInstanceState(outState);
}