Merge "Save and restore PickFragment's internal state." into nyc-andromeda-dev
diff --git a/src/com/android/documentsui/picker/PickFragment.java b/src/com/android/documentsui/picker/PickFragment.java
index a389942..8eb3b4c 100644
--- a/src/com/android/documentsui/picker/PickFragment.java
+++ b/src/com/android/documentsui/picker/PickFragment.java
@@ -32,9 +32,6 @@
 
 import com.android.documentsui.BaseActivity;
 import com.android.documentsui.R;
-import com.android.documentsui.R.id;
-import com.android.documentsui.R.layout;
-import com.android.documentsui.R.string;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.State;
 import com.android.documentsui.services.FileOperationService.OpType;
@@ -45,6 +42,27 @@
 public class PickFragment extends Fragment {
     public static final String TAG = "PickFragment";
 
+    private static final String ACTION_KEY = "action";
+    private static final String COPY_OPERATION_SUBTYPE_KEY = "copyOperationSubType";
+    private static final String PICK_TARGET_KEY = "pickTarget";
+
+    private final View.OnClickListener mPickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            final PickActivity activity = PickActivity.get(PickFragment.this);
+            activity.onPickRequested(mPickTarget);
+        }
+    };
+
+    private final View.OnClickListener mCancelListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            final BaseActivity activity = BaseActivity.get(PickFragment.this);
+            activity.setResult(Activity.RESULT_CANCELED);
+            activity.finish();
+        }
+    };
+
     private int mAction;
     // Only legal values are OPERATION_COPY, OPERATION_MOVE, and unset (OPERATION_UNKNOWN).
     private @OpType int mCopyOperationSubType = OPERATION_UNKNOWN;
@@ -84,22 +102,26 @@
         return mContainer;
     }
 
-    private View.OnClickListener mPickListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            final PickActivity activity = PickActivity.get(PickFragment.this);
-            activity.onPickRequested(mPickTarget);
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        if (savedInstanceState != null) {
+            // Restore status
+            mAction = savedInstanceState.getInt(ACTION_KEY);
+            mCopyOperationSubType =
+                    savedInstanceState.getInt(COPY_OPERATION_SUBTYPE_KEY);
+            mPickTarget = savedInstanceState.getParcelable(PICK_TARGET_KEY);
+            updateView();
         }
-    };
+    }
 
-    private View.OnClickListener mCancelListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            final BaseActivity activity = BaseActivity.get(PickFragment.this);
-            activity.setResult(Activity.RESULT_CANCELED);
-            activity.finish();
-        }
-    };
+    @Override
+    public void onSaveInstanceState(final Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(ACTION_KEY, mAction);
+        outState.putInt(COPY_OPERATION_SUBTYPE_KEY, mCopyOperationSubType);
+        outState.putParcelable(PICK_TARGET_KEY, mPickTarget);
+    }
 
     /**
      * @param action Which action defined in State is the picker shown for.