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