gpt4 book ai didi

java - 防止 AlertDialog 在 NeutralButton 单击时自动关闭???

转载 作者:行者123 更新时间:2023-11-30 01:03:48 26 4
gpt4 key购买 nike

有没有一种方法可以在单击中性按钮或否定按钮时覆盖警告对话框的行为,使其不自动关闭。

final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);
builder.setTitle("Title");
builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do something and close dialog
}
});
builder.setNeutralButton("Clear All", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do something but not close dialog
}
});
builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which, boolean isChecked) {
if(isChecked){
// do something
} else {
// do something else
}
}
});
final AlertDialog dialog = builder.create();
dialog.show();

此处否定按钮的预期行为是:单击“全部清除”时,它应该只清除全部选择,而不是自动关闭对话框。?但 Android alertDialog 会在点击 NegativeButtonNeutralButton 时自动关闭对话框。任何覆盖此行为的方法

最佳答案

所以我能够通过在 dialog.create() 之后和 dialog.show() 之前添加 dialog.setOnShowListener() 来实现这一点

    builder.setNeutralButton("Clear All", null);
builder.setOnShowListener(new DialogInterface.OnShowListener() {

@Override
public void onShow(DialogInterface dialog) {

Button clearAll = builder.getButton(AlertDialog.BUTTON_NEUTRAL);
clearAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do something but don't dismiss
for(int which=0; which<checkedItems.length; which++){
((AlertDialog) dialog).getListView().setItemChecked(which, false);
}
}
});
}
});

循环解决了一个问题,问题:单击全部清除 时,警报对话框中的复选框 UI 没有改变。因此,运行最后一个循环来更改 UI,取消选中所有复选框。

关于java - 防止 AlertDialog 在 NeutralButton 单击时自动关闭???,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39094934/

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