Android 安卓片段回撤混乱

Android 安卓片段回撤混乱,android,fragment,Android,Fragment,我有很多碎片。e、 g:A1、A2、A3、B1、B2、C1、C2、C3。所有碎片都在一个容器里,真实性。 我希望当当前片段为A1或B1或c1时,我按back键,项目完成。 我按照这个顺序隐藏上一个片段并显示下一个片段,它们都是addToBackStack。但是当我调用FActivity.onBackPressed()时,我发现弹出式窗口没有还原上一个片段,并且感到困惑。一些片段丢失了。特别是B1和C1不在backstack中。他们被错过了 以下是我的隐藏和显示代码: private voi

我有很多碎片。e、 g:A1、A2、A3、B1、B2、C1、C2、C3。所有碎片都在一个容器里,真实性。 我希望当当前片段为A1或B1或c1时,我按back键,项目完成。 我按照这个顺序隐藏上一个片段并显示下一个片段,它们都是addToBackStack。但是当我调用FActivity.onBackPressed()时,我发现弹出式窗口没有还原上一个片段,并且感到困惑。一些片段丢失了。特别是B1和C1不在backstack中。他们被错过了

以下是我的隐藏和显示代码:

   private void showFragment(FragmentTransaction ft1, Fragment fm1, Fragment fm2, String tag) {
        if (fm1 != null) {
            if (!fm1.isAdded()) {
                ft1.add(R.id.information_detail, fm1).hide(fm1);
            } else {
                ft1.hide(fm1);
            }
                ft1.addToBackStack(tag);
        }
        if (!fm2.isAdded()) {
            ft1.add(R.id.infomation_detail, fm2, tag);
        } else {
            ft1.show(fm2);
        }
        ft1.commit();
    }
片段控制

Fragment currentFragment ;
     public void startFragmentOnParameter(Fragment oldFragment, String tag, String... param) {

            FragmentTransaction ft1 = getFragmentManager().beginTransaction();
            switch (tag) {
                case "A1":
                    A1= new A1();
                    showFragment(ft1,oldFragment, A1, true, "A1");
                    currentFragment = mPatientCaseInHistory;
                    break;
                case "A2":
                    A2= new A2();
                    showFragment(ft1, oldFragment, A2, false, "A2");
                    currentFragment = mPatientWithArrear2;
                    break;
                case "A3":
                    A3= new A3();
                    showFragment(ft1, oldFragment, A3, false, "A3");
                    currentFragment = mPatientsCases3;
                    break;
               ......
}
背压

public void onBackPressed() {

        String name = currentFragment.getClass().getSimpleName();
        if(name.equals("A1")||name.equals("B2")||name.equals("C1")){

            finish();
        }else{
            super.onBackPressed();
            currentFragment  = (Fragment) getFragmentManager().findFragmentById(R.id.infomation_detail);
        }
    }
我的代码出了什么问题?

尝试使用

getFragmentManager().popBackStack();
反而

 super.onBackPressed();

尝试删除super.onBackPressed()@如果我删除super.onBackPressed(),popBackStack()将无法工作。