diff options
author | Yi Jiang <eejiang@google.com> | 2021-05-05 12:06:42 -0700 |
---|---|---|
committer | Yi Jiang <eejiang@google.com> | 2021-05-05 12:06:51 -0700 |
commit | f54a2be819a11d4204b537c393a203f4b05edee0 (patch) | |
tree | e38313471b31561549c947f02c692fb65379a199 /src/com/android/settings/display/AdaptiveSleepPreferenceController.java | |
parent | 177d76986a7ba13489f2c040025567595f3aa540 (diff) | |
download | packages_apps_Settings-f54a2be819a11d4204b537c393a203f4b05edee0.tar.gz packages_apps_Settings-f54a2be819a11d4204b537c393a203f4b05edee0.tar.bz2 packages_apps_Settings-f54a2be819a11d4204b537c393a203f4b05edee0.zip |
Fixes NPE in Screen attention setting
Bug: 186904496
Test: make RunSettingsRoboTests
ROBOTEST_FILTER=com.android.settings.display
Change-Id: I9bd1e6824e19cf8ea281f7af482d13ef47f36256
Diffstat (limited to 'src/com/android/settings/display/AdaptiveSleepPreferenceController.java')
-rw-r--r-- | src/com/android/settings/display/AdaptiveSleepPreferenceController.java | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java index 7fbb01ecd3..8f61683bb6 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 |