From 9712a4b849db1bf1acd8e3f79730c44d7a9846c6 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 8 Feb 2021 16:38:15 -0300 Subject: [PATCH] Don't launch fragments with back button when not started Sounds strange, but apparently can happen. --- .../briar/android/navdrawer/NavDrawerActivity.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index f301f854b..ced01d62e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -68,6 +68,7 @@ import static android.view.View.VISIBLE; import static androidx.core.view.GravityCompat.START; import static androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED; import static androidx.fragment.app.FragmentManager.POP_BACK_STACK_INCLUSIVE; +import static androidx.lifecycle.Lifecycle.State.STARTED; import static java.util.Objects.requireNonNull; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.RUNNING; @@ -297,6 +298,12 @@ public class NavDrawerActivity extends BriarActivity implements finish(); } else if (fm.getBackStackEntryCount() == 0 && fm.findFragmentByTag(ContactListFragment.TAG) == null) { + // don't start fragments in the wrong part of lifecycle (#1904) + if (!getLifecycle().getCurrentState().isAtLeast(STARTED)) { + LOG.warning("Tried to start contacts fragment in state " + + getLifecycle().getCurrentState().name()); + return; + } /* * This makes sure that the first fragment (ContactListFragment) the * user sees is the same as the last fragment the user sees before