diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 36b2da1baf0..6d64a231517 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -89,10 +89,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override public void onResume() { super.onResume(); - - mSettingsContentObserver.register(getContentResolver()); - updateSwitchBarToggleSwitch(); + mSettingsContentObserver.register(getContentResolver()); } @Override @@ -199,6 +197,9 @@ public class ToggleAccessibilityServicePreferenceFragment extends private void updateSwitchBarToggleSwitch() { final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext()) .contains(mComponentName); + if (mSwitchBar.isChecked() == checked) { + return; + } mSwitchBar.setCheckedInternal(checked); } diff --git a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java index 283fa90884c..d25be83a1b0 100644 --- a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java @@ -17,6 +17,8 @@ package com.android.settings.accessibility; import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME; +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import android.app.settings.SettingsEnums; import android.net.Uri; @@ -26,13 +28,11 @@ import android.provider.Settings; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Switch; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.accessibility.AccessibilityUtil.State; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBar; import com.android.settingslib.search.SearchIndexable; @@ -42,8 +42,7 @@ import java.util.List; /** Settings page for color inversion. */ @SearchIndexable -public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment - implements SwitchBar.OnSwitchChangeListener { +public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment { private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED; private static final String CATEGORY_FOOTER_KEY = "color_inversion_footer_category"; @@ -58,7 +57,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere @Override protected void onPreferenceToggled(String preferenceKey, boolean enabled) { - Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? State.OFF : State.ON); + Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? ON : OFF); } @Override @@ -69,7 +68,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere @Override protected void onRemoveSwitchBarToggleSwitch() { super.onRemoveSwitchBarToggleSwitch(); - mSwitchBar.removeOnSwitchChangeListener(this); + mToggleSwitch.setOnBeforeCheckedChangeListener(null); } @Override @@ -78,17 +77,14 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere R.string.accessibility_display_inversion_switch_title); } - @Override - public void onSwitchChanged(Switch switchView, boolean isChecked) { - Settings.Secure.putInt(getContentResolver(), ENABLED, isChecked ? State.ON : State.OFF); - } - @Override protected void onInstallSwitchBarToggleSwitch() { super.onInstallSwitchBarToggleSwitch(); - mSwitchBar.setCheckedInternal( - Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) == State.ON); - mSwitchBar.addOnSwitchChangeListener(this); + updateSwitchBarToggleSwitch(); + mToggleSwitch.setOnBeforeCheckedChangeListener((toggleSwitch, checked) -> { + onPreferenceToggled(mPreferenceKey, checked); + return false; + }); } @Override @@ -101,9 +97,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) { @Override public void onChange(boolean selfChange, Uri uri) { - mSwitchBar.setCheckedInternal( - Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) - == State.ON); + updateSwitchBarToggleSwitch(); } }; return super.onCreateView(inflater, container, savedInstanceState); @@ -123,6 +117,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere @Override public void onResume() { super.onResume(); + updateSwitchBarToggleSwitch(); mSettingsContentObserver.register(getContentResolver()); } @@ -138,6 +133,14 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere showDialog(DIALOG_ID_EDIT_SHORTCUT); } + private void updateSwitchBarToggleSwitch() { + final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON; + if (mSwitchBar.isChecked() == checked) { + return; + } + mSwitchBar.setCheckedInternal(checked); + } + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.accessibility_color_inversion_settings); } diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 493140c3f1c..9a6aefd1563 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -17,6 +17,8 @@ package com.android.settings.accessibility; import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME; +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import android.app.settings.SettingsEnums; import android.content.Context; @@ -28,14 +30,12 @@ import android.provider.Settings; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Switch; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.accessibility.AccessibilityUtil.State; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBar; import com.android.settingslib.core.AbstractPreferenceController; @@ -47,8 +47,7 @@ import java.util.List; @SearchIndexable public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment - implements DaltonizerRadioButtonPreferenceController.OnChangeListener, - SwitchBar.OnSwitchChangeListener{ + implements DaltonizerRadioButtonPreferenceController.OnChangeListener { private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED; private static final String CATEGORY_FOOTER_KEY = "daltonizer_footer_category"; @@ -88,9 +87,7 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) { @Override public void onChange(boolean selfChange, Uri uri) { - mSwitchBar.setCheckedInternal( - Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) - == State.ON); + updateSwitchBarToggleSwitch(); } }; return super.onCreateView(inflater, container, savedInstanceState); @@ -109,7 +106,9 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe @Override public void onResume() { super.onResume(); + updateSwitchBarToggleSwitch(); mSettingsContentObserver.register(getContentResolver()); + for (AbstractPreferenceController controller : buildPreferenceControllers(getPrefContext(), getSettingsLifecycle())) { ((DaltonizerRadioButtonPreferenceController) controller).setOnChangeListener(this); @@ -145,13 +144,13 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe @Override protected void onPreferenceToggled(String preferenceKey, boolean enabled) { - Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? State.OFF : State.ON); + Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? ON : OFF); } @Override protected void onRemoveSwitchBarToggleSwitch() { super.onRemoveSwitchBarToggleSwitch(); - mSwitchBar.removeOnSwitchChangeListener(this); + mToggleSwitch.setOnBeforeCheckedChangeListener(null); } @Override @@ -160,17 +159,14 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe R.string.accessibility_daltonizer_master_switch_title); } - @Override - public void onSwitchChanged(Switch switchView, boolean isChecked) { - Settings.Secure.putInt(getContentResolver(), ENABLED, isChecked ? State.ON : State.OFF); - } - @Override protected void onInstallSwitchBarToggleSwitch() { super.onInstallSwitchBarToggleSwitch(); - mSwitchBar.setCheckedInternal( - Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) == State.ON); - mSwitchBar.addOnSwitchChangeListener(this); + updateSwitchBarToggleSwitch(); + mToggleSwitch.setOnBeforeCheckedChangeListener((toggleSwitch, checked) -> { + onPreferenceToggled(mPreferenceKey, checked); + return false; + }); } @Override @@ -179,6 +175,14 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe showDialog(DialogEnums.EDIT_SHORTCUT); } + private void updateSwitchBarToggleSwitch() { + final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON; + if (mSwitchBar.isChecked() == checked) { + return; + } + mSwitchBar.setCheckedInternal(checked); + } + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings); }