我创建了3个 fragment ,分别是(FragmentA,FragmentB,FragmentC)和一个MainActivity。
每个 fragment 中都有一个按钮,将其替换为下一个Fragment直到FragmentC。
我要用FragmentC(然后用FragmentB)来代替FragmentA(然后用FragmentC)。
从FragmentA到FragmentB的事务使用以下功能
@Override
public void fragmentreplacewithbackstack(Fragment fragment, String tag) {
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.contner,fragment , tag);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
// fragmentManager.executePendingTransactions();
}
从FragmentB到FragmentC的事务使用以下功能
public void fragmentreplace(Fragment fragment,String tag){
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.contner,fragment , tag);
fragmentTransaction.commit();
}
问题是当我从FragmentC中按返回按钮时,FragmentC和FragmentA彼此重叠。
最佳答案
如果您想从此处按回去到 fragment B,则还需要将 fragment C添加到后堆栈。
因此,也请为 fragment C调用以下内容。
fragmentTransaction.addToBackStack(null);
编辑-更改此当前使用的方法,将其从B转到C,
public void fragmentreplace(Fragment fragment,String tag){
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.contner,fragment , tag);
fragmentTransaction.addToBackStack(null); //this will add it to back stack
fragmentTransaction.commit();
}