summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/preference/SwitchPreference.java20
-rw-r--r--core/res/res/layout/preference_widget_switch.xml3
2 files changed, 9 insertions, 14 deletions
diff --git a/core/java/android/preference/SwitchPreference.java b/core/java/android/preference/SwitchPreference.java
index 17f0c1bf7d5b..8bac6bddc8ec 100644
--- a/core/java/android/preference/SwitchPreference.java
+++ b/core/java/android/preference/SwitchPreference.java
@@ -41,14 +41,16 @@ public class SwitchPreference extends TwoStatePreference {
private CharSequence mSwitchOff;
private final Listener mListener = new Listener();
- private class Listener implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
- @Override
- public void onClick(View v) {
- SwitchPreference.this.onClick();
- }
-
+ private class Listener implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ if (!callChangeListener(isChecked)) {
+ // Listener didn't like it, change it back.
+ // CompoundButton will make sure we don't recurse.
+ buttonView.setChecked(!isChecked);
+ return;
+ }
+
SwitchPreference.this.setChecked(isChecked);
}
}
@@ -111,12 +113,6 @@ public class SwitchPreference extends TwoStatePreference {
switchView.setTextOff(mSwitchOff);
switchView.setOnCheckedChangeListener(mListener);
}
-
- if (checkableView.hasFocusable()) {
- // This is a focusable list item. Attach a click handler to toggle the button
- // for the rest of the item.
- view.setOnClickListener(mListener);
- }
}
syncSummaryView(view);
diff --git a/core/res/res/layout/preference_widget_switch.xml b/core/res/res/layout/preference_widget_switch.xml
index ed4ed57c54c0..83ef0975bcf4 100644
--- a/core/res/res/layout/preference_widget_switch.xml
+++ b/core/res/res/layout/preference_widget_switch.xml
@@ -22,5 +22,4 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="16dip"
- android:focusable="false"
- android:clickable="false" />
+ android:focusable="false" />