Fragment addToBackStack() and popBackStackImmediate() not working
Try this (Note add not replace for fragmentA, and addToBackStack() for fragmentB)
StopItemFragment list = StopItemFragment.newInstance(null); //A - extends ListFragment
fragmentManager.beginTransaction()
.add(R.id.content_frame, list)
.commit();
and
StopFragment fragment = StopFragment.newInstance(null, null); //B - extends Fragment
...
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.addToBackStack("FragmentB")
.commit();
For those, who are still looking for solution.
In the main Activity
class (which is hosting the fragments)just override onBackPressed()
.
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ){
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
There is no onBackPressed()
method in fragment, and this method is just for the activity
. So,when we press the back key, the default behaviour of activity
is shown, which is
you will either go to previous activity(if there is any) or the app will exit.
Now we need to override this method to tell the activity
that when we press the back key, if there are any fragments in back stack, pop them out (and this is when the addToBackStack()
comes into picture). Otherwise follow the default behaviour.