【发布时间】:2019-05-15 09:48:38
【问题描述】:
场景:
Activity 将 Fragment A 添加到 Framelayout。
片段 A 替换为片段 B。
在第 2 步之前,一切正常。
- 片段 B 替换为片段 B(也尝试替换为片段 A)。
在第 3 步中使用 addToBackStack() 时,一切正常。输出将是 A>B>B(recreated)>B(onBackPressed()/popBackStack())>A.
但是当我在第 3 步中没有使用 addToBackStack() 时,输出将是 A>B>B(recreated)>A(与 B 重叠)。
发生重叠的任何原因?
Activity添加Fragment A:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ChartFragment fragment = new ChartFragment();
fragmentTransaction.add(R.id.container, fragment);
fragmentTransaction.commit();
片段 A 替换为片段 B:
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
ChildChartFragment fragment = new ChildChartFragment();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragment.setArguments(b);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
重新创建片段 B:
getFragmentManager().beginTransaction().replace(R.id.container, new ChildChartFragment()).commit();
【问题讨论】: