Как отклонить AlertDialog внутри TextWatcher - PullRequest
0 голосов
/ 18 октября 2018

У меня есть ALertDialog, который позволяет пользователю вводить номер булавки. TextWatcher проверяет длину булавки и затем проверяет правильность булавки, когда длина текста в EditText соответствует длине булавки магазина.,Я пытаюсь закрыть / отменить диалог, когда попытка булавки прошла успешно.Я попытался dialog.dismiss ();и dialog.cancel ();но ни одна из них не работает

Так что, чтобы быть ясным, я пытаюсь закрыть AlertDialog в части else в if / else.Спасибо за просмотр

Код:

 AlertDialog.Builder builder;

public void dialog() {

builder = new AlertDialog.Builder(getContext());
builder.setTitle("Title");
// I'm using fragment here so I'm using getView() to provide ViewGroup
// but you can provide here any other instance of ViewGroup from your Fragment / Activity
View viewInflated = LayoutInflater.from(getContext()).inflate(R.layout.pword, (ViewGroup) getView(), false);
// Set up the input
final EditText input = (EditText) viewInflated.findViewById(R.id.input);
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
builder.setView(viewInflated);


builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
        stopReader();
        startReader();
    }
});

builder.show();

input.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {


    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {


    }

    @Override
    public void afterTextChanged(Editable s) {

        m_Text = input.getText().toString();

        if (m_Text.length() == details.get(2).length()) {
            if (!input.getText().toString().equals(details.get(2))) {
                Toast.makeText(MainActivity.mainActivity, "Incorrect pin entered!", Toast.LENGTH_SHORT).show();
                Log.d("eLOQ", "User pin is not correct");

                input.setText("");

            } else if (input.getText().toString().equals(details.get(2))) {
                controller.startStageTwo();
                Log.d("eLOQ", "User pin is correct");


                dialog.dismiss();
            }
        }


    }
});

}

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы должны использовать dialog.dismiss () в нужном месте.Вы закрываете свой диалог только тогда, когда «Пользовательский пин-код правильный», но когда «Попытка пин-кода успешна», вы не закрываете свой диалог.Измените свой код, как показано ниже:

 @Override
public void afterTextChanged(Editable s) {

    m_Text = input.getText().toString();

    if (m_Text.length() == details.get(2).length()) {
        if (!input.getText().toString().equals(details.get(2))) {
            Toast.makeText(MainActivity.mainActivity, "Incorrect pin entered!", Toast.LENGTH_SHORT).show();
            Log.d("eLOQ", "User pin is not correct");

            input.setText("");

        } else if (input.getText().toString().equals(details.get(2))) {
            controller.startStageTwo();
            Log.d("eLOQ", "User pin is correct");
     }
     dialog.dismiss();     // dismiss your dialog here. Here your dialog will dismiss in both caases
    }


}

Удачи:)

0 голосов
/ 18 октября 2018
dialog.hide(); or dialog.cancel(); 
...