等待Dialog.OnClickListener onClick响应

时间:2014-09-16 13:12:41

标签: android android-alertdialog android-dialog

在我的申请中,我有一个需要保存客户的地方。

我做了一些检查以验证每个字段是否都有值,然后我需要提示一个对话框,如果有人是空白的,发回一个布尔值,并根据其值保存或不是客户。

这是我的代码:

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(..)

这可能还是我问月亮?我做错了什么?

2 个答案:

答案 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;
    }
}