Android - 避免 AlertDialog 关闭(错误处理)

Android - avoid AlertDialog to close(Error handling)

我可以知道如何避免 AlertDialog 即使我单击确定也关闭。

之所以这样做是为了在输入错误时做一个简单的错误处理。

------------------------
Input password
------------------------

Password:______________

_______________________
   | OK |  | Cancel|

我希望在输入错误时保留此对话框。以便用户可以再次输入。

我的代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setTitle("Insert Passcode");
                    final EditText input = new EditText(this);
                    input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    builder.setView(input);

                    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            m_Text = input.getText().toString() ;
                            if (m_Text.equals(String.valueOf(passcode_value))){
                                btnAutoLogin.performClick();
                            }
                            else
                            {
                                  xxxxxxxxxxxxxxx
                            }
                        }
                    });
                    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });

                    builder.show();

首先为按钮点击事件创建自定义监听器Class如下:

class CustomListener implements View.OnClickListener {
private final Dialog dialog;
public CustomListener(Dialog dialog) {
    this.dialog = dialog;
}
@Override
public void onClick(View v) {

    // Do whatever you want here

    // If tou want to close the dialog, uncomment the line below
    //dialog.dismiss();
}

}

当您显示对话框或初始化对话框按钮时,如下所示:

AlertDialog dialog = dialogBuilder.create();
dialog.show();
Button button = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
button.setOnClickListener(new CustomListener(dialog));

是的,您可以像这样简单地覆盖正面按钮功能:-

builder.setPositiveButton("OK", null);
    AlertDialog dialog = builder.create();
    dialog .show();
    dialog .getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
          // implement your code here
    });