Когда я нажимаю кнопку «Назад» телефона (первая из трех кнопок устройства, стрелка), она переходит к предыдущему фрагменту
Это означает, что вы используетестек для ваших фрагментов.
Первое решение
Простое решение - просто удалить (не использовать) задний стек
Второе решение
переопределите OnBackStack, а затем управляйте своей деятельностью
@Override
public void onBackPressed() {
finish();
startActivity(new Intent(this, MenuActivity.class));
}
Третье решение
, для его реализации требуется больше усилий, но вы можете попробовать. @ MaximeJallu решение
1 - Создать интерфейс
public interface IOnBackPressed {
/**
* If you return true the back press will not be taken into account, otherwise the activity will act naturally
* @return true if your processing has priority if not false
*/
boolean onBackPressed();
}
2 - Подготовить свою деятельность
public class MyActivity extends Activity {
@Override public void onBackPressed() {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) {
super.onBackPressed();
}
} ...
}
Наконец в вашем фрагменте:
public class MyFragment extends Fragment implements IOnBackPressed{
@Override
public boolean onBackPressed() {
if (myCondition) {
//action not popBackStack
return true;
} else {
return false;
}
}
}