summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2013-07-23 22:16:56 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2013-07-23 22:16:56 +0000
commiteb2fded0d3fc95ca887b99149585fd1db8840346 (patch)
tree65b741de212b7359943eeaa6b120be30d9f2f72e
parent9a05b31aab8b4f2c431fda8c14aa7816eb4a91ad (diff)
parent94c02a1a1a6d7e6900e5a459e9cc699b9510e5a2 (diff)
Merge "Fix handling of ListPreference.setValue()"
-rw-r--r--core/java/android/preference/ListPreference.java16
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();
+ }
+ }
}
/**