From aa133574b00d65c698d52d815db566c8536195fa Mon Sep 17 00:00:00 2001
From: Vincent Breitmoser <valodim@mugenguild.com>
Date: Sat, 16 May 2015 23:05:58 +0200
Subject: fix fragment handling in ViewKeyActivity

---
 .../keychain/ui/ViewKeyActivity.java               | 49 ++++++----------------
 1 file changed, 12 insertions(+), 37 deletions(-)

(limited to 'OpenKeychain/src')

diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
index 9a48201b6..302236570 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
@@ -275,9 +275,19 @@ public class ViewKeyActivity extends BaseNfcActivity implements
             result.createNotify(this).show();
         }
 
-        startFragment(savedInstanceState, mDataUri);
+        // Fragments are stored, no need to recreate those
+        if (savedInstanceState != null) {
+            return;
+        }
 
-        if (savedInstanceState == null && getIntent().hasExtra(EXTRA_NFC_AID)) {
+        FragmentManager manager = getSupportFragmentManager();
+        // Create an instance of the fragment
+        final ViewKeyFragment frag = ViewKeyFragment.newInstance(mDataUri);
+        manager.beginTransaction()
+                .replace(R.id.view_key_fragment, frag)
+                .commit();
+
+        if (getIntent().hasExtra(EXTRA_NFC_AID)) {
             Intent intent = getIntent();
             byte[] nfcFingerprints = intent.getByteArrayExtra(EXTRA_NFC_FINGERPRINTS);
             String nfcUserId = intent.getStringExtra(EXTRA_NFC_USER_ID);
@@ -292,35 +302,6 @@ public class ViewKeyActivity extends BaseNfcActivity implements
         setContentView(R.layout.view_key_activity);
     }
 
-    private void startFragment(Bundle savedInstanceState, final Uri dataUri) {
-        // If we're being restored from a previous state, then we don't
-        // need to do anything and should return or else we could end
-        // up with overlapping fragments.
-        if (savedInstanceState != null) {
-            return;
-        }
-
-        new Handler().post(new Runnable() {
-            @Override
-            public void run() {
-
-                FragmentManager manager = getSupportFragmentManager();
-                if (manager.getBackStackEntryCount() == 0) {
-                    // Create an instance of the fragment
-                    final ViewKeyFragment frag = ViewKeyFragment.newInstance(dataUri);
-                    manager.beginTransaction()
-                            .replace(R.id.view_key_fragment, frag)
-                            .commit();
-                    manager.popBackStack();
-                } /* else {
-                    // not sure yet if we actually want this!
-                    manager.popBackStack();
-                } */
-
-            }
-        });
-    }
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
@@ -455,12 +436,6 @@ public class ViewKeyActivity extends BaseNfcActivity implements
         startActivityForResult(intent, 0);
     }
 
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        //Note:-Done due to the same weird crashes as for commitAllowingStateLoss()
-        //super.onSaveInstanceState(outState);
-    }
-
     private void showQrCodeDialog() {
         Intent qrCodeIntent = new Intent(this, QrCodeViewActivity.class);
 
-- 
cgit v1.2.3