1
我创建SwitchPreference
以更改Android设置活动中的值。当用户更改SwitchPreference
值时,将调用“setOnPreferenceChangeListener()”函数。当用户在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的旧值?
我同时加入'switchPreference.setOnPreferenceChangeListener(OnPreferenceChangeListener.this)一个错误;'错误: 'android.preference.Preference.OnPreferenceChangeListener'不是封闭类 –
@JegadeesanS,已更新。 – azizbekian
如果在对话框中单击“否”按钮,PreferenceChangeListener将获得空值。此提示正常关闭。但下次当我点击SwitchPreference时,监听器不会被调用 –