diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java index 0e17d3f8e90..b7c69017404 100644 --- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java +++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java @@ -199,9 +199,10 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements * Set the OnBeforeCheckedChangeListener. */ public void setOnBeforeCheckedChangeListener(OnBeforeCheckedChangeListener listener) { - if (mMainSwitchBar == null) { + if (!mBeforeCheckedChangeListeners.contains(listener)) { mBeforeCheckedChangeListeners.add(listener); - } else { + } + if (mMainSwitchBar != null) { mMainSwitchBar.setOnBeforeCheckedChangeListener(listener); } } @@ -210,9 +211,10 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements * Adds a listener for switch changes */ public void addOnSwitchChangeListener(OnMainSwitchChangeListener listener) { - if (mMainSwitchBar == null) { + if (!mSwitchChangeListeners.contains(listener)) { mSwitchChangeListeners.add(listener); - } else { + } + if (mMainSwitchBar != null) { mMainSwitchBar.addOnSwitchChangeListener(listener); } } @@ -221,9 +223,8 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements * Remove a listener for switch changes */ public void removeOnSwitchChangeListener(OnMainSwitchChangeListener listener) { - if (mMainSwitchBar == null) { - mSwitchChangeListeners.remove(listener); - } else { + mSwitchChangeListeners.remove(listener); + if (mMainSwitchBar != null) { mMainSwitchBar.removeOnSwitchChangeListener(listener); } }