Merge "Fix the problem of the TalkBack function can not be turned on." into sc-dev
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 4c4757a..9d94858 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -50,7 +50,6 @@
 import android.widget.Switch;
 
 import androidx.annotation.Nullable;
-import androidx.preference.Preference;
 
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
@@ -233,14 +232,18 @@
 
     @Override
     protected void updateSwitchBarToggleSwitch() {
-        final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext())
-                .contains(mComponentName);
+        final boolean checked = isAccessibilityServiceEnabled();
         if (mToggleServiceSwitchPreference.isChecked() == checked) {
             return;
         }
         mToggleServiceSwitchPreference.setChecked(checked);
     }
 
+    private boolean isAccessibilityServiceEnabled() {
+        return AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext())
+                .contains(mComponentName);
+    }
+
     /**
      * Return whether the device is encrypted with legacy full disk encryption. Newer devices
      * should be using File Based Encryption.
@@ -315,7 +318,6 @@
     }
 
     private void handleConfirmServiceEnabled(boolean confirmed) {
-        mToggleServiceSwitchPreference.setChecked(confirmed);
         getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, confirmed);
         onPreferenceToggled(mPreferenceKey, confirmed);
     }
@@ -339,8 +341,8 @@
 
     @Override
     public void onSwitchChanged(Switch switchView, boolean isChecked) {
-        if (isChecked != mToggleServiceSwitchPreference.isChecked()) {
-            onPreferenceClick(mToggleServiceSwitchPreference);
+        if (isChecked != isAccessibilityServiceEnabled()) {
+            onPreferenceClick(isChecked);
         }
     }
 
@@ -534,14 +536,8 @@
         mDialog.dismiss();
     }
 
-    private boolean onPreferenceClick(Preference preference) {
-        boolean checked = ((SettingsMainSwitchPreference) preference).isChecked();
-        if (checked) {
-            mToggleServiceSwitchPreference.setChecked(true);
-            getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
-                    /* enableService */ true);
-            showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE);
-        } else {
+    private boolean onPreferenceClick(boolean isChecked) {
+        if (isChecked) {
             mToggleServiceSwitchPreference.setChecked(false);
             getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
                     /* disableService */ false);
@@ -553,6 +549,11 @@
                     showPopupDialog(DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL);
                 }
             }
+        } else {
+            mToggleServiceSwitchPreference.setChecked(true);
+            getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
+                    /* enableService */ true);
+            showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE);
         }
         return true;
     }