|
@@ -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();
|