I have an AppCompatActivity with
Android.Support.V7.Widget.Toolbar myToolbar = (Android.Support.V7.Widget.Toolbar)FindViewById(Resource.Id.my_toolbar);
SetSupportActionBar(myToolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
I use fragments in this activity to change what is displayed under the toolbar. I want each fragment (on SupportFragmentManager.BeginTransaction().Replace(Resource.Id.content, myFragment).Commit()
) to be pushed on a stack so on toolbar back button touch or android back button press previous fragment is popped and displayed. How to do that?
I solved that by overriding OnOptionsItemSelected in my activity:
public override bool OnOptionsItemSelected(IMenuItem item)
{
if (SupportFragmentManager.BackStackEntryCount == 0)
{
return base.OnOptionsItemSelected(item);
}
SupportFragmentManager.PopBackStack();
return true;
}
Note: No need to override OnBackPressed.
use this :
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(containerId, fragment, fragment.getClass().getSimpleName());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
@Override
public void onBackPressed() { //or use on menu item clicked
FragmentManager fragmentManager = getSupportFragmentManager();
if (fragmentManager.getBackStackEntryCount() > 0) {
fragmentManager.popBackStack();
}else {
super.onBackPressed();
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.