From f54a2be819a11d4204b537c393a203f4b05edee0 Mon Sep 17 00:00:00 2001 From: Yi Jiang Date: Wed, 5 May 2021 12:06:42 -0700 Subject: [PATCH] Fixes NPE in Screen attention setting Bug: 186904496 Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.display Change-Id: I9bd1e6824e19cf8ea281f7af482d13ef47f36256 --- .../AdaptiveSleepPreferenceController.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java index 7fbb01ecd38..8f61683bb63 100644 --- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java @@ -73,7 +73,6 @@ public class AdaptiveSleepPreferenceController { * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { - initializePreference(); updatePreference(); screen.addPreference(mPreference); } @@ -82,6 +81,7 @@ public class AdaptiveSleepPreferenceController { * Updates the appearance of the preference. */ public void updatePreference() { + initializePreference(); final EnforcedAdmin enforcedAdmin = mRestrictionUtils.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT); if (enforcedAdmin != null) { @@ -93,19 +93,22 @@ public class AdaptiveSleepPreferenceController { @VisibleForTesting void initializePreference() { - mPreference = new RestrictedSwitchPreference(mContext); - mPreference.setTitle(R.string.adaptive_sleep_title); - mPreference.setSummary(R.string.adaptive_sleep_description); - mPreference.setChecked(isChecked()); - mPreference.setKey(PREFERENCE_KEY); - mPreference.setOnPreferenceChangeListener((preference, value) -> { - final boolean isChecked = (Boolean) value; - mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, - isChecked); - Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); - return true; - }); + if (mPreference == null) { + mPreference = new RestrictedSwitchPreference(mContext); + mPreference.setTitle(R.string.adaptive_sleep_title); + mPreference.setSummary(R.string.adaptive_sleep_description); + mPreference.setChecked(isChecked()); + mPreference.setKey(PREFERENCE_KEY); + mPreference.setOnPreferenceChangeListener((preference, value) -> { + final boolean isChecked = (Boolean) value; + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, + isChecked); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); + return true; + }); + } } @VisibleForTesting