Android 如何使用键盘输入关闭AlertDialog?

Android 如何使用键盘输入关闭AlertDialog?,android,kotlin,android-alertdialog,dismiss,Android,Kotlin,Android Alertdialog,Dismiss,当前,当我在editText字段中输入文本并点击键盘上的enter键时,它会按预期更改文本,但AlertDialog会保持在屏幕和键盘上。当我按enter键时,有没有办法关闭警报和键盘alertDialog.Disclose()或alertDialog.close()对我不起作用。谢谢你抽出时间 (1..912).forEach { val id = resources.getIdentifier("Price$it", "id", packageName) va

当前,当我在editText字段中输入文本并点击键盘上的enter键时,它会按预期更改文本,但AlertDialog会保持在屏幕和键盘上。当我按enter键时,有没有办法关闭警报和键盘<代码>alertDialog.Disclose()或
alertDialog.close()
对我不起作用。谢谢你抽出时间

(1..912).forEach {
        val id = resources.getIdentifier("Price$it", "id", packageName)
        val tv = findViewById<TextView>(id)
        tv.setOnLongClickListener {

            //Alert Window
            val alertDialog = AlertDialog.Builder(this@MainActivity)
            alertDialog.setTitle("NEW PRICE")
            val input = EditText(this@MainActivity)
            //Alert Submit on Enter
            input.setOnKeyListener { v, keyCode, event ->
                if (event.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
                    // Input changes text
                    tv.text = input.text
                    when {
                        tv.text.startsWith("-") -> tv.setTextColor(Color.RED)
                        tv.text.startsWith("+") -> tv.setTextColor(Color.GREEN)
                    else -> {
                        tv.text = "_"
                        tv.setTextColor(Color.DKGRAY)
                    }
                    }
                    // Close Alert Window
                    alertDialog.dismiss()


                    // Save Price Table
                }
                false
            }


            val lp = LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT
            )
            input.layoutParams = lp
            alertDialog.setView(input).show()
            return@setOnLongClickListener true

        }
    }
(1..912).forEach{
val id=resources.getIdentifier(“Price$it”、“id”、packageName)
val tv=findViewById(id)
tv.setOnLongClickListener{
//警报窗口
val alertDialog=alertDialog.Builder(this@MainActivity)
alertDialog.setTitle(“新价格”)
val输入=编辑文本(this@MainActivity)
//输入时提交警报
input.setOnKeyListener{v,键代码,事件->
if(event.action==KeyEvent.action\u DOWN&&keyCode==KeyEvent.keyCode\u ENTER){
//输入更改文本
tv.text=input.text
什么时候{
tv.text.startsWith(“-”->tv.setTextColor(Color.RED)
tv.text.startsWith(“+”)->tv.setTextColor(Color.GREEN)
其他->{
tv.text=“\”
tv.setTextColor(Color.DKGRAY)
}
}
//关闭警报窗口
alertDialog.discouse()命令
//保存价格表
}
假的
}
val lp=LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_父级,
LinearLayout.LayoutParams.MATCH\u父项
)
input.layoutParams=lp
alertDialog.setView(输入).show()
return@setOnLongClickListener真的
}
}

您已将
alertDialog
声明为
alertDialog.Builder
而不是
alertDialog

对于
AlertDialog.Builder
,没有
Dislose()
方法
更改:


是否编译
alertDialog.Disclose()
compile?不,它不编译,我只是把它放在那里作为示例。请参阅我的答案…再次感谢@forpas。
val alertDialog = AlertDialog.Builder(this@MainActivity)
val alertDialog = AlertDialog.Builder(this@MainActivity).create()
alertDialog.setView(input).show()
alertDialog.setView(input)
alertDialog.show()