Fragment内にFragmentを入れ子にしている場合(※1)に、子Fragmentでは、addToBackStack()メソッドを呼んでも、ハードキーのバックキーで一つ前に戻ることができない。その場合は、以下のコードを追加することで一つ前に戻ることができる。
(※1)getChildFragmentManager()を使用している場合
MainActivity.java
@Override
public void onBackPressed() {
// if there is a fragment and the back stack of this fragment is not empty,
// then emulate 'onBackPressed' behaviour, because in default, it is not working
FragmentManager fm = getSupportFragmentManager();
for (Fragment frag : fm.getFragments()) {
if (frag.isVisible()) {
FragmentManager childFm = frag.getChildFragmentManager();
if (childFm.getBackStackEntryCount() > 0) {
childFm.popBackStack();
return;
}
}
}
super.onBackPressed();
}