[英]Nested Fragment onbackpresssed goes to MainActivity instead of back fragment
I move From Activity to FagmentA then FragmentA to FragmentB. 我从“活动”移到“ FagmentA”,然后从“片段A”移到“片段B”。 When Press back Button while staying in FragmentB it goes to MainActivity(It should move to a Back fragment which is FragmentA). 当停留在FragmentB中的同时按向后按钮时,它将转到MainActivity(它应移至一个Back片段,即FragmentA)。 what's wrong with it? 它出什么问题了?
Moving from Activity to FragmentA 从活动转移到FragmentA
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();
Moving FramgentA to FragmentB 将FramgentA移至FragmentB
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();
Onbackpressed MainActivity 后压式MainActivity
@Override
public void onBackPressed() {
android.app.FragmentManager fm = getFragmentManager();
if(fm.getBackStackEntryCount()>0){
fm.popBackStack();
}else{
super.onBackPressed();
}
Your problem is with your imports of FragmentManager
you use both : 您的问题是您同时使用FragmentManager
的导入:
android.support.v4.app.FragmentManager
and android.app.FragmentManager
android.support.v4.app.FragmentManager
和android.app.FragmentManager
change this : 改变这个:
@Override
public void onBackPressed() {
android.app.FragmentManager fm = getFragmentManager();
if(fm.getBackStackEntryCount()>0){
fm.popBackStack();
}else{
super.onBackPressed();
}
to: 至:
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount()>0){
fm.popBackStack();
}else{
super.onBackPressed();
}
You only add Fragment
s using the support FragmentManager
meaning your existing code will always return 0 here -> fm.getBackStackEntryCount()
until you use correct support FragmentManager
您只能使用支持FragmentManager
添加Fragment
这意味着您的现有代码将始终在此处返回0-> fm.getBackStackEntryCount()
直到您使用正确的支持FragmentManager
为止
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.