diff options
author | cyBerta <cyberta@riseup.net> | 2019-04-02 01:12:37 +0200 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2019-04-02 01:12:37 +0200 |
commit | 197f79fa142c2c6bfe2d5e7279c6fad79fa427c2 (patch) | |
tree | ffc94f0256206746346fc14da2438c021a0b9f1a /app/src/main/java/se/leap/bitmaskclient/MainActivity.java | |
parent | 9eb20164f227fb617b2ea9700ebd493f9bf7caa4 (diff) |
catch illegal state exceptions when replacing fragments
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/MainActivity.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/MainActivity.java | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java index fd0c27d6..b0acd860 100644 --- a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java +++ b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java @@ -101,14 +101,13 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener, @Override public void onBackPressed() { FragmentManagerEnhanced fragmentManagerEnhanced = new FragmentManagerEnhanced(getSupportFragmentManager()); - if (fragmentManagerEnhanced.findFragmentByTag(EipFragment.TAG) == null) { - Fragment fragment = new EipFragment(); + Fragment fragment = fragmentManagerEnhanced.findFragmentByTag(MainActivity.TAG); + if (fragment == null || !(fragment instanceof EipFragment)) { + Fragment eipFragment = new EipFragment(); Bundle bundle = new Bundle(); bundle.putParcelable(PROVIDER_KEY, provider); - fragment.setArguments(bundle); - fragmentManagerEnhanced.beginTransaction() - .replace(R.id.container, fragment, EipFragment.TAG) - .commit(); + eipFragment.setArguments(bundle); + fragmentManagerEnhanced.replace(R.id.main_container, eipFragment, MainActivity.TAG); } else { super.onBackPressed(); } @@ -126,12 +125,10 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener, return; } - String fragmentTag = null; Fragment fragment = null; switch (intent.getAction()) { case ACTION_SHOW_VPN_FRAGMENT: fragment = new EipFragment(); - fragmentTag = EipFragment.TAG; Bundle bundle = new Bundle(); if (intent.hasExtra(ASK_TO_CANCEL_VPN)) { bundle.putBoolean(ASK_TO_CANCEL_VPN, true); @@ -150,9 +147,8 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener, intent.setAction(null); if (fragment != null) { - new FragmentManagerEnhanced(getSupportFragmentManager()).beginTransaction() - .replace(R.id.container, fragment, fragmentTag) - .commit(); + new FragmentManagerEnhanced(getSupportFragmentManager()) + .replace(R.id.main_container, fragment, MainActivity.TAG); } } |