diff options
| author | 2013-07-23 22:16:56 +0000 | |
|---|---|---|
| committer | 2013-07-23 22:16:56 +0000 | |
| commit | eb2fded0d3fc95ca887b99149585fd1db8840346 (patch) | |
| tree | 65b741de212b7359943eeaa6b120be30d9f2f72e | |
| parent | 9a05b31aab8b4f2c431fda8c14aa7816eb4a91ad (diff) | |
| parent | 94c02a1a1a6d7e6900e5a459e9cc699b9510e5a2 (diff) | |
Merge "Fix handling of ListPreference.setValue()"
| -rw-r--r-- | core/java/android/preference/ListPreference.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/core/java/android/preference/ListPreference.java b/core/java/android/preference/ListPreference.java index f44cbe40f7ae..9edf112d630b 100644 --- a/core/java/android/preference/ListPreference.java +++ b/core/java/android/preference/ListPreference.java @@ -16,13 +16,13 @@ package android.preference; - import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; +import android.text.TextUtils; import android.util.AttributeSet; /** @@ -41,6 +41,7 @@ public class ListPreference extends DialogPreference { private String mValue; private String mSummary; private int mClickedDialogEntryIndex; + private boolean mValueSet; public ListPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -130,9 +131,16 @@ public class ListPreference extends DialogPreference { * @param value The value to set for the key. */ public void setValue(String value) { - mValue = value; - - persistString(value); + // Always persist/notify the first time. + final boolean changed = !TextUtils.equals(mValue, value); + if (changed || !mValueSet) { + mValue = value; + mValueSet = true; + persistString(value); + if (changed) { + notifyChanged(); + } + } } /** |