Android 嵌套片段OnBackPressed转到MainActivity,而不是back片段

Android 嵌套片段OnBackPressed转到MainActivity,而不是back片段,android,fragment,Android,Fragment,我从活动转移到片段A,然后从片段A转移到片段B。当在FragmentB中按下后退按钮时,它将进入Main Activity(维护活动),它将移动到FragmentA中的后退片段。 怎么了 从活动转移到碎片a Fragment fragment = new FragmentA() ; FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();

我从活动转移到片段A,然后从片段A转移到片段B。当在FragmentB中按下后退按钮时,它将进入Main Activity(维护活动),它将移动到FragmentA中的后退片段。 怎么了

从活动转移到碎片a

   Fragment fragment = new FragmentA() ;
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,
                    android.R.anim.fade_out);
            fragmentTransaction.replace(R.id.frame, fragment, CURRENT_TAG);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commitAllowingStateLoss();
将碎片A移动到碎片B

 layout.removeAllViewsInLayout();
            Fragment fragment =new FragmentB ;
            FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.frame, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
反压主活动

 @Override
public void onBackPressed() {
    android.app.FragmentManager fm = getFragmentManager();
    if(fm.getBackStackEntryCount()>0){
        fm.popBackStack();
    }else{
        super.onBackPressed(); 
    }

您的问题在于FragmentManager的导入—您同时使用:

android.support.v4.app.FragmentManager和android.app.FragmentManager

更改此项:

@Override
public void onBackPressed() {
    android.app.FragmentManager fm = getFragmentManager();
    if(fm.getBackStackEntryCount()>0){
        fm.popBackStack();
    }else{
        super.onBackPressed(); 
    }
致:

您只能使用support FragmentManager添加片段,这意味着在使用正确的support FragmentManager之前,您现有的代码将始终在此处返回0->fm.getBackBackbackEntryCount

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();
    if(fm.getBackStackEntryCount()>0){
        fm.popBackStack();
    }else{
        super.onBackPressed(); 
    }