Browse Source

Fixed https://github.com/afollestad/material-dialogs/issues/622

Aidan Follestad 9 years ago
parent
commit
932d364450

+ 8 - 16
library/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java

@@ -10,12 +10,12 @@ import android.os.Parcelable;
 import android.preference.ListPreference;
 import android.preference.PreferenceManager;
 import android.support.annotation.NonNull;
-import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.View;
 
 import com.afollestad.materialdialogs.MaterialDialog;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
 /**
@@ -91,9 +91,13 @@ public class MaterialListPreference extends ListPreference {
                     public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
                         onClick(null, DialogInterface.BUTTON_POSITIVE);
                         if (which >= 0 && getEntryValues() != null) {
-                            String value = getEntryValues()[which].toString();
-                            if (callChangeListener(value) && isPersistent())
-                                setValue(value);
+                            try {
+                                Field clickedIndex = ListPreference.class.getDeclaredField("mClickedDialogEntryIndex");
+                                clickedIndex.setAccessible(true);
+                                clickedIndex.set(MaterialListPreference.this, which);
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
                         }
                         return true;
                     }
@@ -144,18 +148,6 @@ public class MaterialListPreference extends ListPreference {
             mDialog.dismiss();
     }
 
-    @Override
-    public void setValue(String value) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
-            super.setValue(value);
-        } else {
-            String oldValue = getValue();
-            super.setValue(value);
-            if (!TextUtils.equals(value, oldValue))
-                notifyChanged();
-        }
-    }
-
     @Override
     protected Parcelable onSaveInstanceState() {
         final Parcelable superState = super.onSaveInstanceState();