项目场景:
项目首页使用RadioGroup+RadioButton+Fragment实现页面切换,出现了一个问题fragment会出现重叠问题,就是一个fragment显示了两层,
并不是必现问题。
经过排查发现是项目主页面Activity被销毁重建了,但是之前的fragment对象没有被回收导致。
原因分析:
在旋转屏幕后或者页面调到后台一段时间在打开,就会出现Fragment重叠显示,显示了两个相同fragment的效果。
解决方案:
第一步,在添加fragment的时候添加key。
第二步,再onCreate里判断savedInstanceState是否为空,若不为空说 明是重建的activity,用key将fragment对象取出来即可。
下面我们来看一下具体代码
private FragmentManager fManager;
private FragmentTransaction transaction;
private List<Fragment> fragmentList = new ArrayList<>();
private FragmentOne fragmentOne;
private FragmentTwo fragmentTwo;
private FragmentFour fragmentFour;
private FragmentFive fragmentFive;
private static final String FRAGMENT_ONE_KEY = "FragmentOne";
private static final String FRAGMENT_TWO_KEY = "FragmentTwo";
private static final String FRAGMENT_FOUR_KEY = "FragmentFour";
private static final String FRAGMENT_FIVE_KEY = "FragmentFive";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fManager = getSupportFragmentManager();
//如果activity销毁后重建,在这里拿出之前的Fragment对象。
if (savedInstanceState != null) {
fragmentOne = (FragmentOne) fManager.findFragmentByTag(FRAGMENT_ONE_KEY);
fragmentTwo = (FragmentTwo) fMana