Return 在检查编辑文本是否为空时显示警告对话框

Return to Alert Dialog when Check if an Edit Text is empty

我创建了带有三个 EditText 和一个用于发送值的按钮的 AlertDialog。如果其中一个编辑文本为空,它应该 return 到警报对话框。

我用这段代码来检查:

 if (TextUtils.isEmpty(edt_dialog_date.getText().toString())) {
       Toast.makeText(MainActivity.this, "Please enter Date", 
                 Toast.LENGTH_SHORT).show();
       return;
 }  

如果编辑文本为空,它会关闭 Alert 对话框并 return 到 Parent Activity ,我想要的是 return 到 AlertDialog 本身. 怎么做?

这是我的来源:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 builder.setTitle("Add New Bill");

 LayoutInflater inflater = this.getLayoutInflater();
 View custom_dialog = inflater.inflate(R.layout.dialog_custom, null);

EditText edtNo = (EditText) custom_dialog .findViewById(R.id.edt_no);
EditText edtName = (EditText) custom_dialog .findViewById(R.id.edt_name);
EditText edtAge = (EditText) custom_dialog .findViewById(R.id.edt_age);

builder.setView(custom_dialog);

builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
  if (TextUtils.isEmpty(edtNo.getText().toString())) {
       return;
  }
  if (TextUtils.isEmpty(edtName.getText().toString())) {
   return;
    }
  if(TextUtils.isEmpty(edtAge.getText().toString())) {
        return;
     }
    }
});

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
builder.show();     

因为默认情况下,AlertDialog 按钮将 dismiss() 对话框,因此为防止这种情况,您必须在显示对话框后立即覆盖按钮单击侦听器。您可以尝试以下代码段。

dialog.setOnShowListener(new DialogInterface.OnShowListener() {

   @Override
    public void onShow(DialogInterface dialogInterface) {

        Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
        button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            //Dismiss once everything is OK.
            dialog.dismiss();
        }
     });
    }
});
dialog.show();

要在检查所有编辑文本是否都填充了正确的信息之前停止关闭对话框,您必须将肯定按钮代码留空并关闭否定按钮中的对话框。 之后你必须定义

Alert dialog = builder.create();

然后显示对话框并使用

dialog.getButton

到正按钮并设置 OnClickListener 像下面的代码:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = this.getLayoutInflater();
View custom_dialog = inflater.inflate(R.layout.dialog_custom, null);

EditText edtNo = (EditText) custom_dialog .findViewById(R.id.edt_no);
EditText edtName = (EditText) custom_dialog .findViewById(R.id.edt_name);
EditText edtAge = (EditText) custom_dialog .findViewById(R.id.edt_age);

builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
         // leave it empty 
   }

});

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
     @Override
     public void onClick(DialogInterface dialog, int which) {
          dialog.dismiss();
    }
});

builder.setView(custom_dialog);
AlertDialog dialog = builder.create();
dialog.show();
 dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
            // write check code
  if (TextUtils.isEmpty(edtNo.getText().toString())) {
       return;
  }
  if (TextUtils.isEmpty(edtName.getText().toString())) {
      return;
  }
  if(TextUtils.isEmpty(edtAge.getText().toString())) {
     return;
 }

// if every thing is Ok then dismiss dialog
            dialog.dismiss();
   }

}