diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 5e5be4bafa..23e73ca9cf 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -170,10 +170,16 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc @Override public void onBackPressed() { + if (backHandled()) + return; + super.onBackPressed(); + } + + protected boolean backHandled() { for (IBackPressedListener listener : backPressedListeners) if (listener.onBackPressed()) - return; - super.onBackPressed(); + return true; + return false; } public interface IBackPressedListener { diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 6bd2ed47b0..aaab86dd03 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -539,7 +539,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB int count = getSupportFragmentManager().getBackStackEntryCount(); if (exit || count > 1) super.onBackPressed(); - else { + else if (!backHandled()) { exit = true; Toast.makeText(this, R.string.app_exit, Toast.LENGTH_SHORT).show(); new Handler().postDelayed(new Runnable() {