diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 0b5356d086..7fee4a1003 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -770,6 +770,11 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc finish(); } + + public void onBackPressedFragment() { + performBack(); + } + @Override public boolean shouldUpRecreateTask(Intent targetIntent) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 7a176b1ea3..039b5591b8 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -695,16 +695,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB }); getSupportFragmentManager().addOnBackStackChangedListener(this); - - getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { - @Override - public void handleOnBackPressed() { - if (Helper.isKeyboardVisible(view)) - Helper.hideKeyboard(view); - else - onExit(); - } - }); + getOnBackPressedDispatcher().addCallback(this, backPressedCallback); // Initialize @@ -727,6 +718,21 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB Shortcuts.update(this, this); } + @Override + public void onBackPressedFragment() { + backPressedCallback.handleOnBackPressed(); + } + + private OnBackPressedCallback backPressedCallback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + if (Helper.isKeyboardVisible(view)) + Helper.hideKeyboard(view); + else + onExit(); + } + }; + private void init() { Bundle args = new Bundle(); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index bb5485d42c..7c347a115c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -7414,7 +7414,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } handleExit(); - finish(); + + FragmentActivity activity = getActivity(); + if (activity instanceof ActivityBase) + ((ActivityBase) activity).onBackPressedFragment(); + else + finish(); } };