I'm trying to make a correct BackStack
. I have tried to implement this decision. But it does not work for me.
I have one list in navigation drawer and other navigation. So, when I select different fragment lists a few times, I want one-touch return to the main menu instead of returning to BackStack
.
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 1){
finish();
}
else {
super.onBackPressed();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("theme", mThemeId);
}
private void replaceFragment (Fragment fragment){
String backStateName = fragment.getClass().getName();
String fragmentTag = backStateName;
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null) {
FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right,
R.anim.slide_back_in_left, R.anim.slide_back_out_right);
ft.replace(R.id.frgmCont, fragment);
ft.addToBackStack(backStateName);
ft.commit();
}
}