我创建了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();
}

10-08 02:28