![](/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.