我创建了 3 个 fragment ,即(FragmentA、FragmentB、FragmentC)和一个 MainActivity。 每个 fragment 中都有一个按钮,它会用下一个 fragment 替换自己,直到 FragmentC。
我正在替换 FragmentA(用)FragmentB(然后用)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 添加到 backstack。
因此也为 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();
}
关于android - fragment 在后退按钮上重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22068552/