Android 第二次替换时碎片重叠,无addtobackstack
情景:Android 第二次替换时碎片重叠,无addtobackstack,android,android-fragments,Android,Android Fragments,情景: 活动将片段A添加到Framelayout 片段A替换为片段B 在第二步之前,一切都很完美 片段B替换为片段B(也尝试替换为片段A) 在步骤3中使用addToBackStack()时,一切都能正常工作。输出将是A>B>B(重新创建)>B(onBackPressed()/popBackStack())>A 但当我在步骤3中不使用addToBackStack()时,输出将是A>B>B(重新创建)>A(与B重叠) 发生重叠的原因是什么 活动添加片段A: FragmentManager fragm
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();
getFragmentManager().beginTransaction().replace(R.id.container, new ChildChartFragment()).commit();
重新创建片段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();
getFragmentManager().beginTransaction().replace(R.id.container, new ChildChartFragment()).commit();
尝试在片段中设置背景色。效果不错。只是想知道为什么在不使用背景色隐藏片段B的情况下发生重叠。这意味着片段B在替换为片段A时没有移除?ohk。我很高兴它成功了。是的,它确实在背景中,它没有被删除,所以我们需要为每个片段设置背景,否则您可能会面临这个问题。