From d5ede015cf39dea1487b2a2f79c5fed1b9911a47 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Mon, 14 Aug 2017 10:44:29 -0500 Subject: [PATCH] ConfigActivity: Avoid crash when started while locked Signed-off-by: Jason A. Donenfeld --- .../com/wireguard/android/ConfigActivity.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/wireguard/android/ConfigActivity.java b/app/src/main/java/com/wireguard/android/ConfigActivity.java index f672c594..fe957374 100644 --- a/app/src/main/java/com/wireguard/android/ConfigActivity.java +++ b/app/src/main/java/com/wireguard/android/ConfigActivity.java @@ -15,11 +15,12 @@ import com.wireguard.config.Config; */ public class ConfigActivity extends BaseConfigActivity { - private boolean canAddFragments; private int containerId; private final FragmentManager fm = getFragmentManager(); private boolean isEditing; + private boolean isServiceAvailable; private boolean isSplitLayout; + private boolean isStateSaved; @Override public void onBackPressed() { @@ -44,7 +45,7 @@ public class ConfigActivity extends BaseConfigActivity { @Override protected void onCurrentConfigChanged(final Config config) { - if (!canAddFragments) + if (!isServiceAvailable || isStateSaved) return; final Fragment currentFragment = fm.findFragmentById(containerId); Log.d(getClass().getSimpleName(), "onCurrentConfigChanged config=" + @@ -134,6 +135,13 @@ public class ConfigActivity extends BaseConfigActivity { } } + @Override + public void onPostResume() { + super.onPostResume(); + isStateSaved = false; + onCurrentConfigChanged(getCurrentConfig()); + } + @Override public void onSaveInstanceState(final Bundle outState) { // We cannot save fragments that might switch between containers if the layout changes. @@ -146,13 +154,14 @@ public class ConfigActivity extends BaseConfigActivity { if (oldFragment != null) fm.beginTransaction().remove(oldFragment).commit(); } + isStateSaved = true; super.onSaveInstanceState(outState); } @Override protected void onServiceAvailable() { // Create the initial fragment set. - canAddFragments = true; + isServiceAvailable = true; onCurrentConfigChanged(getCurrentConfig()); } }