diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java index d4a653b4c59..1bfa932953e 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -117,11 +117,17 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { private Preference mExplore; + private boolean mDetached; + private boolean isVolumeValid() { return (mVolume != null) && (mVolume.getType() == VolumeInfo.TYPE_PRIVATE) && mVolume.isMountedReadable(); } + public PrivateVolumeSettings() { + setRetainInstance(true); + } + @Override protected int getMetricsCategory() { return MetricsLogger.DEVICEINFO_STORAGE; @@ -158,10 +164,12 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { mExplore = buildAction(R.string.storage_menu_explore); + mDetached = false; + setHasOptionsMenu(true); } - public void update() { + private void update() { if (!isVolumeValid()) { getActivity().finish(); return; @@ -304,7 +312,10 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { } mStorageManager.registerListener(mStorageListener); - update(); + + if (!mDetached) { + update(); + } } @Override @@ -313,12 +324,19 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { mStorageManager.unregisterListener(mStorageListener); } + @Override + public void onDetach() { + super.onDetach(); + mDetached = true; + } + @Override public void onDestroy() { super.onDestroy(); if (mMeasure != null) { mMeasure.onDestroy(); } + mDetached = false; } @Override