diff --git a/src/com/android/settings/widget/HotspotApBandSelectionPreference.java b/src/com/android/settings/widget/HotspotApBandSelectionPreference.java index 4f127eb9193..0a2405e4136 100644 --- a/src/com/android/settings/widget/HotspotApBandSelectionPreference.java +++ b/src/com/android/settings/widget/HotspotApBandSelectionPreference.java @@ -118,8 +118,8 @@ public class HotspotApBandSelectionPreference extends CustomDialogPreference imp SavedState myState = new SavedState(superState); myState.shouldRestore = getDialog() != null; - myState.enabled2G = mBox2G.isChecked(); - myState.enabled5G = mBox5G.isChecked(); + myState.enabled2G = mBox2G != null && mBox2G.isChecked(); + myState.enabled5G = mBox5G != null && mBox5G.isChecked(); return myState; } diff --git a/tests/robotests/src/com/android/settings/widget/HotspotApBandSelectionPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/HotspotApBandSelectionPreferenceTest.java index 6bfc968a12a..0ffda3baa96 100644 --- a/tests/robotests/src/com/android/settings/widget/HotspotApBandSelectionPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/HotspotApBandSelectionPreferenceTest.java @@ -115,6 +115,21 @@ public class HotspotApBandSelectionPreferenceTest { assertThat(mPreference.mShouldRestore).isFalse(); } + @Test + public void onSaveInstanceState_doesNotCrashWhenViewGone() { + mPreference.setExistingConfigValue(WifiConfiguration.AP_BAND_2GHZ); + mPreference.onBindDialogView(mLayout); + // When the device dozes the view and dialog can become null + mPreference.mBox5G = null; + mPreference.mBox2G = null; + ReflectionHelpers.setField(mPreference, "mFragment", null); + + // make sure it does not crash and state is not restored + Parcelable parcelable = mPreference.onSaveInstanceState(); + mPreference.onRestoreInstanceState(parcelable); + assertThat(mPreference.mShouldRestore).isFalse(); + } + @Test public void onSaveInstanceState_presentWhenDialogPresent() { mPreference.setExistingConfigValue(WifiConfiguration.AP_BAND_2GHZ);