Как отклонить диалоговое окно предупреждения Android через setOnEditorActionListener?

Существует диалоговое окно предупреждения, которое содержит пароль EditText и я пытаюсь выполнить действие, которое является таким же, как нажатие положительной кнопки после нажатия клавиши RETURN.

В моей MainActivity:

 fun enterPwd() { val builder = android.app.AlertDialog.Builder(this) val password = EditText(this) // some layout attributes about password are omitted password.imeOptions = EditorInfo.IME_ACTION_GO password.setOnEditorActionListener({ if(id == EditorInfo.IME_ACTION_GO) { v, id, event -> doSomthingFunction() } false }) builder.setView(password).setMessage("message") .setPositiveButton("confirm", { doSomethingFunction() }) .setNegativeButton("cancel", { dialog, i -> }).show() } 

В последнем doSomethingFunction () в setPositiveButton строитель автоматически отклоняется после нажатия кнопки. Однако в предыдущем диалоге все еще есть. Я попытался передать dialog = builder.show() а затем dialog.dismiss() сразу после doSomethingFunction() в setOnEditorActionListener (добавлен как следующий), но это не повлияло. Как отключить это диалоговое окно после нажатия клавиши возврата?

 val dialog = builder.show() password.setOnEditorActionListener({ if(id == EditorInfo.IME_ACTION_GO) { v, id, event -> doSomthingFunction() dialog.dismiss() } false }) 

попробуйте поместить setPositiveButton () вместо doSomethingFunction ()

Привет, пожалуйста, отмените диалог после вызова doSomthingFunction ().

Комментарий Рама вдохновил меня. Поскольку я уже определил действие, когда нажата кнопка с положительной кнопкой, я просто получаю диалог от конструктора по объявлению, а затем просто вызываю performClick() на положительной кнопке, и все работает нормально.

То есть:

 val dialog = builder.setView(password).setMessage("message") .setPositiveButton("confirm", { doSomethingFunction() }) .setNegativeButton("cancel", { dialog, i -> }).show() password.setOnEditorActionListener({ if(id == EditorInfo.IME_ACTION_GO) { v, id, event -> dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick() } false })