我所要做的是在onBackPressed
我想創建頂部片段的一個新的對象,所以我想這個代碼:刪除堆棧中的頂部片段
if (getFragmentManager().getBackStackEntryCount() > 1) {
FragmentManager.BackStackEntry backEntry =getFragmentManager().getBackStackEntryAt(getFragmentManager().getBackStackEntryCount()-1);
String Back_fragment_name=backEntry.getName();
if(Back_fragment_name.equals("Frag1")){
Frag1 frag = new Frag();
getFragmentManager().beginTransaction().replace(R.id.RR, frag , "Frag1").commit();
}else if(Back_fragment_name.equals("Frag2")){
Frag2 frag = new Frag2();
getFragmentManager().beginTransaction().replace(R.id.RR, frag , "Frag2").commit();
}else if(Back_fragment_name.equals("Frag3")){
Frag3 frag = new Frag3();
getFragmentManager().beginTransaction().replace(R.id.RR, frag , "Frag3").commit();
}
//getFragmentManager().popBackStack(); //Wrong
} else{
super.onBackPressed();
}
問題是,我想那應該刪除來自BackStack的頂部片段,但使用popBackStack
是錯誤的,因爲它顯示了頂部片段,我只需要將它從BackStack中移除。
任何想法?
首先使用ID或標籤獲取片段片段fragment1 = fragmentManager.findFragmentByTag(tag); ()刪除片段使用getFragmentManager()。beginTransaction()。remove(frag) – Pehlaj
'beginTransaction()。remove(frag)'將從活動中刪除片段,但不從BackStack中刪除 –
@AtefHares - 不確定這是你需要正確..試試這個 - int backStackCount = mFragmentManager.getBackStackEntryCount(); // Get backstack fragment id int backStackId = mFragmentManager.getBackStackEntryAt(backStackCount -1).getId(); mFragmentManager.popBackStack(backStackId,FragmentManager.POP_BACK_STACK_INCLUSIVE); –