I have a navigation box menu structure that is currently set up to return to the previous fragmnet with addToBackStack when I select the back button:
if (menuItem.getItemId() == R.id.nav_item_messages) {
FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
xfragmentTransaction.replace(R.id.containerView, new MessageTabFragment()).addToBackStack("MainActivity").commit();
}
However, I want the Back button to always send the user back to a specific frame segment, and not just to the previous one.
How can I do that?
amendments
I tried to add the code:
int homeFragmentIdentifier = -1;
...
if (menuItem.getItemId() == R.id.nav_item_messages) {
FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
if(homeFragmentIdentifier == -1) {
homeFragmentIdentifier = xfragmentTransaction.replace(R.id.containerView, new MessageTabFragment()).commit();
} else {
xfragmentTransaction.replace(R.id.containerView, new MessageTabFragment()).commit();
}
}
...
@Override
public void onBackPressed() {
super.onBackPressed();
getFragmentManager().popBackStack(homeFragmentIdentifier, 0);
}
But it just causes an error:
01-15 19:31:55.368 18410-18410/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.feastappv2, PID: 18410
java.lang.IllegalArgumentException: Bad id: -1
at android.app.FragmentManagerImpl.popBackStack(FragmentManager.java:526)
at com.example.android.feastappv2.feastapp.MainActivity.onBackPressed(MainActivity.java:143)
at android.app.Activity.onKeyUp(Activity.java:2667)
at android.view.KeyEvent.dispatch(KeyEvent.java:3214)
at android.app.Activity.dispatchKeyEvent(Activity.java:2922)
source
share