diff options
author | Samuel Holland <samuel@sholland.org> | 2017-08-14 10:44:29 -0500 |
---|---|---|
committer | Samuel Holland <samuel@sholland.org> | 2017-08-14 10:44:29 -0500 |
commit | d5ede015cf39dea1487b2a2f79c5fed1b9911a47 (patch) | |
tree | 7fed81ef316a54b94ec1e895eedabdba2675ce13 /app/src/main | |
parent | 5e55d196be092f4a4dcb212cf09d7a1bdab70e00 (diff) |
ConfigActivity: Avoid crash when started while locked
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main')
-rw-r--r-- | app/src/main/java/com/wireguard/android/ConfigActivity.java | 15 |
1 files 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=" + @@ -135,6 +136,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. if (fm.getBackStackEntryCount() > 0) { @@ -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()); } } |