aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-07-09 02:35:22 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-07-09 02:35:22 +0200
commit7f9cc445fba937c5ae9ea1891ee1227bd68628b0 (patch)
tree0594cb122739cb04c07adf58ba45eb1e50b50a64 /OpenKeychain
parenta549938b61a93fc87235acfce23d7684a768776b (diff)
downloadopen-keychain-7f9cc445fba937c5ae9ea1891ee1227bd68628b0.tar.gz
open-keychain-7f9cc445fba937c5ae9ea1891ee1227bd68628b0.tar.bz2
open-keychain-7f9cc445fba937c5ae9ea1891ee1227bd68628b0.zip
cryptoophelper: requested code must be saved between instances!
Diffstat (limited to 'OpenKeychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java13
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java15
2 files changed, 27 insertions, 1 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java
index c22566767..d831cb4b1 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui.base;
import android.content.Context;
import android.content.Intent;
+import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
@@ -63,6 +64,18 @@ abstract class CryptoOperationFragment<T extends Parcelable, S extends Operation
}
@Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mOperationHelper.onRestoreInstanceState(savedInstanceState);
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ mOperationHelper.onSaveInstanceState(outState);
+ }
+
+ @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
mOperationHelper.handleActivityResult(requestCode, resultCode, data);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java
index 4bf86af8f..9dfa0be21 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationHelper.java
@@ -26,6 +26,7 @@ import android.os.Bundle;
import android.os.Message;
import android.os.Messenger;
import android.os.Parcelable;
+import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
@@ -53,6 +54,8 @@ import org.sufficientlysecure.keychain.util.Log;
*/
public class CryptoOperationHelper<T extends Parcelable, S extends OperationResult> {
+ public static final String ARG_REQUESTED_CODE = "requested_code";
+
public interface Callback<T extends Parcelable, S extends OperationResult> {
T createOperationInput();
@@ -102,6 +105,17 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
mCallback = callback;
}
+ public void onSaveInstanceState(Bundle outState) {
+ outState.putInt(ARG_REQUESTED_CODE, mRequestedCode);
+ }
+
+ public void onRestoreInstanceState(@Nullable Bundle state) {
+ if (state == null) {
+ return;
+ }
+ mRequestedCode = state.getInt(ARG_REQUESTED_CODE, -1);
+ }
+
public void setProgressMessageResource(int id) {
mProgressMessageResource = id;
}
@@ -325,6 +339,5 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
throw new AssertionError("bad return class ("
+ result.getClass().getSimpleName() + "), this is a programming error!");
}
-
}
} \ No newline at end of file