From 10675bfc4613d408032defb0b81a869b36efc44c Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 5 Mar 2024 09:30:11 +0100 Subject: [PATCH] Prevent crash --- .../java/eu/faircode/email/ActivityBase.java | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index f1b13fa8ea..e5b091590e 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -825,15 +825,33 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc } public void performBack() { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) { - // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/Activity.java#3896 - ActionBar ab = getSupportActionBar(); - if (ab != null && ab.collapseActionView()) - return; - FragmentManager fm = getSupportFragmentManager(); - if (!fm.isStateSaved() && fm.popBackStackImmediate()) - return; - } + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + try { + // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/Activity.java#3896 + ActionBar ab = getSupportActionBar(); + if (ab != null && ab.collapseActionView()) + return; + FragmentManager fm = getSupportFragmentManager(); + if (!fm.isStateSaved() && fm.popBackStackImmediate()) + return; + } catch (Throwable ex) { + Log.e(ex); + /* + Exception java.lang.IllegalArgumentException: Unknown cmd: 2 + at androidx.fragment.app.BackStackRecord.executePopOps (BackStackRecord.java:478) + at androidx.fragment.app.FragmentManager.executeOps (FragmentManager.java:2006) + at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1895) + at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1839) + at androidx.fragment.app.FragmentManager.popBackStackImmediate (FragmentManager.java:891) + at androidx.fragment.app.FragmentManager.popBackStackImmediate (FragmentManager.java:797) + at eu.faircode.email.ActivityBase.performBack (ActivityBase.java:834) + at eu.faircode.email.ActivityBilling.performBack (ActivityBilling.java:71) + at eu.faircode.email.ActivityView.onExit (ActivityView.java:1316) + at eu.faircode.email.ActivityView.access$2200 (ActivityView.java:107) + at eu.faircode.email.ActivityView$17.handleOnBackPressed (ActivityView.java:775) + at androidx.activity.OnBackPressedDispatcher.onBackPressed (OnBackPressedDispatcher.kt:276) + */ + } finish(); }