AlertDialog带有正面按钮并验证自定义EditText

hsz*_*hsz 17 android android-dialog

我创建了简单AlertDialog的正面和负面按钮.正面按钮已经注册DialogInterface.OnClickListener,我获得了EditText价值.我必须验证它(例如,如果它必须不为null)并且如果值不正确,则禁止关闭此对话框.单击并验证后如何防止关闭对话框?

Foa*_*Guy 57

对话创建:

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);
builder.setCancelable(false)
.setMessage("Please Enter data")
.setView(edtLayout) //<-- layout containing EditText
.setPositiveButton("Enter", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        //All of the fun happens inside the CustomListener now.
        //I had to move it to enable data validation.
    }
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
Button theButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
theButton.setOnClickListener(new CustomListener(alertDialog));
Run Code Online (Sandbox Code Playgroud)

CustomListener:

class CustomListener implements View.OnClickListener {
    private final Dialog dialog;
    public CustomListener(Dialog dialog) {
        this.dialog = dialog;
    }
    @Override
    public void onClick(View v) {
        // put your code here
        String mValue = mEdtText.getText().toString();
        if(validate(mValue)){
            dialog.dismiss();
        }else{
            Toast.makeText(YourActivity.this, "Invalid data", Toast.LENGTH_SHORT).show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但是您不必费心创建CustomListener类。相反,您可以使用匿名的内联侦听器。 (2认同)