Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94c02a1a authored by Alan Viverette's avatar Alan Viverette
Browse files

Fix handling of ListPreference.setValue()

Previously, setValue() was not calling notifyChanged(). This
prevented the summary from updating correctly. Now it calls
notifyChanged() the first time it's called and when the value
actually changes.

BUG: 9987962
Change-Id: I02dd4be6bde2969f39d30921a62a7ba908128e0e
parent 209bede6
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -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) {
        // 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();
            }
        }
    }

    /**