При открытии фрагмента B1 используйте это
private boolean loadFragmentB1(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, fragment)
.commit();
return true;
При открытии другого фрагмента, кроме B1, используйте это
private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.addToBackStack(null)
.replace(R.id.main_fragment, fragment)
.commit();
return true;
}
return false;
}
И при переопределении активности onBackPressed как этот
@Override
public void onBackPressed(){
if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
getSupportFragmentManager().popBackStack();
} else {
super.onBackPressed();
finish();
}
}