在我的申请中,我有一个需要保存客户的地方。
我做了一些检查以验证每个字段是否都有值,然后我需要提示一个对话框,如果有人是空白的,发回一个布尔值,并根据其值保存或不是客户。
这是我的代码:
private boolean canBeSaved(ArrayList<View> viewList) {
if (!viewList.isEmpty()) {
showErrorDialog();
for (View v : viewList) {
((EditText) v).setError("errorMsg");
v.requestFocus();
}
return false;
} else {
return true;
}
}
private void showErrorDialog() {
QustomDialogBuilder saveDialog = new QustomDialogBuilder(this);
saveDialog.setTitle("ATTENZIONE!");
saveDialog.setMessage(Constants.CANT_SAVE);
saveDialog.setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
saveDialog.show();
}
但在执行showErrorDialog();
后,我无法等待onClick
事件恢复流程。
目前我得到的流程是:showErrorDialog() - &gt; dialog.show() - &gt;其余的canBeSaved(..)
我想要的流程是:showErrorDialog() - &gt; dialog.show() - &gt; 等待onClickEvent - &gt;其余的canBeSaved(..)
这可能还是我问月亮?我做错了什么?
答案 0 :(得分:1)
我对DialogInterface并不熟悉,但我相信你想做的是:
private void showErrorDialog() {
final QustomDialogBuilder saveDialog = new QustomDialogBuilder(this); //add final
saveDialog.setTitle("ATTENZIONE!");
saveDialog.setMessage(Constants.CANT_SAVE);
saveDialog.setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
saveDialog.dismiss(); //change to saveDialog
}
});
saveDialog.show();
}
答案 1 :(得分:1)
private boolean canBeSaved(ArrayList<View> viewList) {
if (!viewList.isEmpty()) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("ATTENZIONE!")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Handle Ok
for (View v : viewList) {
((EditText) v).setError("errorMsg");
v.requestFocus();
}
saveDialog.dismiss();
return false;
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Handle Cancel
saveDialog.dismiss();
return false;
}
}).create();
} else {
return true;
}
}