Posted at

FragmentのpopBackStackまとめ

More than 3 years have passed since last update.


一つ前の状態に戻す

popBackStack()

getFragmentManager().popBackStack();


指定したIDの状態に戻す

getBackStackEntryAt(int index)

popBackStack(int id, int flags)

FragmentManager fm = getFragmentManager();

BackStackEntry entry = fm.getBackStackEntryAt(0);
int id = entry.getId();
fm.popBackStack(id, 0)

※Stack に何もない場合は getBackStackEntry(0) が null になる


指定したIDの状態の一つ前に戻す


指定したタグの状態に戻す

popBackStack(String name, int flags)

// 事前に下記のような操作を行う

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace({id}, {Fragment});
ft.addToBackStack("TAG");
ft.commit();

// TAG まで戻る

FragmentManager fm = getFragmentManager();
fm.popBackStack("TAG", 0)


指定したタグの状態の一つ前に戻す

// 事前に下記のような操作を行う

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace({id}, {Fragment});
ft.addToBackStack("TAG");
ft.commit();

// TAG の前まで戻る

FragmentManager fm = getFragmentManager();
fm.popBackStack("TAG", FragmentManager.POP_BACK_STACK_INCLUSIVE)

下記のメソッドはそれぞれ上記メソッドと同じ内容が同期的に行われる

FragmentManager.popBackStackImmediate()

FragmentManager.popBackStackImmediate(int id, int flags)

FragmentManager.popBackStackImmediate(String name, int flags)