Android - избягвайте AlertDialog за затваряне (обработка на грешки)

Мога ли да знам как да избегна затварянето на AlertDialog дори когато щракна върху OK.

Причината за това е да се направи проста обработка на грешки, когато има грешен вход.

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

person enzo    schedule 20.04.2015    source източник


Отговори (2)


Да, можете просто да замените функционалността на положителния бутон по следния начин: -

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
    });
person cool Boy    schedule 20.04.2015

Първо създайте персонализиран клас слушател за събитие с щракване върху бутон, както следва:

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));
person Rajan Bhavsar    schedule 20.04.2015