如何通过setOnEditorActionListener关闭android alert对话框本身?

有一个警告对话框,其中包含一个密码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() } 

setPositiveButton的后者doSomethingFunction()中,构建器将在按下按钮后自动解除。 然而在前一个,对话仍然在那里。 我试图传递dialog = builder.show() ,然后在dialog.dismiss() doSomethingFunction()之后立即关闭dialog.dismiss() ),但是没有效果。 返回键被按下后,我如何解除这个对话框?

 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 })