summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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();
+ }
+ }
}
/**