Fix NPE at Storage Settings configuration change

At configuration change, both StorageCategoryFragment and
ProfileSelectStorageFragment are re-created and there is
a different callback sequence than normal case.

This change save/restore mSelectedStorageEntry in instance
state bundle to fix the NPE.

Bug: 189108700
Test: manual
      Install work profile and rotate Storage Settings.
Change-Id: I39d7ef7ced22188ee66216d57518198d63671e0e
diff --git a/src/com/android/settings/deviceinfo/StorageCategoryFragment.java b/src/com/android/settings/deviceinfo/StorageCategoryFragment.java
index ce8f219..9ae835e 100644
--- a/src/com/android/settings/deviceinfo/StorageCategoryFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageCategoryFragment.java
@@ -73,6 +73,7 @@
         LoaderManager.LoaderCallbacks<SparseArray<StorageAsyncLoader.StorageResult>>,
         Preference.OnPreferenceClickListener {
     private static final String TAG = "StorageCategoryFrag";
+    private static final String SELECTED_STORAGE_ENTRY_KEY = "selected_storage_entry_key";
     private static final String SUMMARY_PREF_KEY = "storage_summary";
     private static final String FREE_UP_SPACE_PREF_KEY = "free_up_space";
     private static final int STORAGE_JOB_ID = 0;
@@ -127,6 +128,10 @@
 
         mStorageManager = getActivity().getSystemService(StorageManager.class);
 
+        if (icicle != null) {
+            mSelectedStorageEntry = icicle.getParcelable(SELECTED_STORAGE_ENTRY_KEY);
+        }
+
         initializePreference();
     }
 
@@ -167,6 +172,12 @@
         }
     }
 
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        outState.putParcelable(SELECTED_STORAGE_ENTRY_KEY, mSelectedStorageEntry);
+        super.onSaveInstanceState(outState);
+    }
+
     private void onReceivedSizes() {
         boolean stopLoading = false;
         if (mStorageInfo != null) {