gpt4 book ai didi

java - 当用户在 setOnPreferenceChangeListener 中选择否定按钮时关闭确认对话框

转载 作者:行者123 更新时间:2023-11-30 00:30:13 34 4
gpt4 key购买 nike

我创建 SwitchPreference 以更改 Android 设置 Activity 中的值。当用户更改 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 的旧值?

最佳答案

您可以暂时“关闭”您的听众:


switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, final Object newValue) {

final Preference.OnPreferenceChangeListener that = this;

new EasyMaterialDialog.Builder(getActivity())
...
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
switchPreference.setOnPreferenceChangeListener(null);
switchPreference.setChecked(!(Boolean) newValue);
switchPreference.setOnPreferenceChangeListener(that);
}
})
.show();

return false;
}
});

关于java - 当用户在 setOnPreferenceChangeListener 中选择否定按钮时关闭确认对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44560898/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com