diff options
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base')
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 |