![](/img/trans.png)
[英]MainActivity to Fragment and from that Fragment back to MainActivity
[英]Nested Fragment onbackpresssed goes to MainActivity instead of back fragment
我从“活动”移到“ FagmentA”,然后从“片段A”移到“片段B”。 当停留在FragmentB中的同时按向后按钮时,它将转到MainActivity(它应移至一个Back片段,即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();
将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();
后压式MainActivity
@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();
}
至:
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount()>0){
fm.popBackStack();
}else{
super.onBackPressed();
}
您只能使用支持FragmentManager
添加Fragment
这意味着您的现有代码将始终在此处返回0-> fm.getBackStackEntryCount()
直到您使用正确的支持FragmentManager
为止
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.