Merge "Don't assume a default of 'false' for TwoStatePreference" into jb-mr1-dev
diff --git a/core/java/android/preference/TwoStatePreference.java b/core/java/android/preference/TwoStatePreference.java
index d186b20..c649879 100644
--- a/core/java/android/preference/TwoStatePreference.java
+++ b/core/java/android/preference/TwoStatePreference.java
@@ -37,6 +37,7 @@
private CharSequence mSummaryOn;
private CharSequence mSummaryOff;
boolean mChecked;
+ private boolean mCheckedSet;
private boolean mSendClickAccessibilityEvent;
private boolean mDisableDependentsState;
@@ -74,11 +75,16 @@
* @param checked The checked state.
*/
public void setChecked(boolean checked) {
- if (mChecked != checked) {
+ // Always persist/notify the first time; don't assume the field's default of false.
+ final boolean changed = mChecked != checked;
+ if (changed || !mCheckedSet) {
mChecked = checked;
+ mCheckedSet = true;
persistBoolean(checked);
- notifyDependencyChange(shouldDisableDependents());
- notifyChanged();
+ if (changed) {
+ notifyDependencyChange(shouldDisableDependents());
+ notifyChanged();
+ }
}
}