如何通过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 })