【发布时间】:2017-06-15 07:08:17
【问题描述】:
我创建SwitchPreference 用于更改 Android 设置活动中的值。当用户更改SwitchPreference 值时,将调用“setOnPreferenceChangeListener()”函数。
现在,我显示了一个对话框提示,供用户确认此操作。当用户点击正面按钮时,它可以正常工作。
但问题是,每当用户选择否定确认按钮时。
在 Android API 21 中 - 对话框提示正常关闭。
在 Android API 19 中 - 对话框提示重复打开。
switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference preference, final Object newValue) {
new EasyMaterialDialog.Builder(getActivity())
.title("Confirmation")
.content("Are you sure?")
.positiveText("Yes")
.negativeText("No")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
//Works Normally
}})
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
//The problem is here
//The switchPreference value changed here again
//So once again setOnPreferenceChangeListener is called
switchPreference.setChecked(!(Boolean)newValue);
}
})
.cancelable(false)
.show();
return false;
}
});
当用户单击否定按钮时如何更改 SwitchPreference 的旧值?
【问题讨论】:
标签: java android listener android-preferences preferencefragment