尽管进行了很多搜索和试验,但是如果我的EditText为空,我无法避免我的AlertDialog关闭...我看到这是StackOverflow上的当前问题,有很多响应,但是当我尝试时,它不起作用...
这是我的Kotlin代码,感谢您的帮助...
import androidx.appcompat.app.AlertDialog
import android.content.DialogInterface
private fun showMyEditextDialog() {
val alertDialog = AlertDialog.Builder(this)
val view = layoutInflater.inflate(R.layout.my_layout, null)
val myedittext = view.findViewById(R.id.myedittext) as EditText
alertDialog.setTitle(getString(R.string.title))
alertDialog.setView(view)
alertDialog.setCancelable(false)
alertDialog.setPositiveButton(R.string.ok, DialogInterface.OnClickListener { dialogInterface, i ->
var isValid = true
if ( isEmpty(myedittext.text.toString()) ) {
isValid = false
Toast.makeText(this, "empty", Toast.LENGHT_SHORT).show()
}
if ( isValid ) {
Toast.makeText(this, "yeah!", Toast.LENGHT_SHORT).show() }
if ( isValid ) {
dialogInterface.dismiss()
}
})
}
我的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/question" />
<EditText
android:id="@+id/myedittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal" />
</LinearLayout>
如果输入一个值,则显示“ 是”消息。 如果我没有输入值,则显示“ 空”消息,但对话框关闭...
感谢您的帮助,
MT
答案 0 :(得分:1)
您需要获得一个肯定的按钮才能覆盖onclick方法
您可以使用以下代码:
private fun showMyEditextDialog() {
val alertDialog = AlertDialog.Builder(this)
val view = layoutInflater.inflate(R.layout.my_layout, null)
val myedittext = view.findViewById(R.id.myedittext) as EditText
alertDialog.setTitle(getString(R.string.title))
alertDialog.setView(view)
alertDialog.setCancelable(false)
alertDialog.setPositiveButton(R.string.ok, null)
alertDialog.create()
var dialog = alertDialog.create()
dialog.show()
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
var isValid = true
if ( isEmpty(myedittext.text.toString()) ) {
isValid = false
Toast.makeText(this, "empty", Toast.LENGTH_SHORT).show()
}
if ( isValid ) {
Toast.makeText(this, "yeah!", Toast.LENGTH_SHORT).show() }
if ( isValid ) {
dialog.dismiss()
}
}
}
答案 1 :(得分:0)
我不确定是否有办法绕过alertdialog的按钮功能。如果有,我从来没有找到它。但是,您可以采用更简单的解决方案。只需使用editText和按钮创建您自己的“警报”视图。将视图设置为view.setVisibility(View.INVISIBLE)或(View.GONE),其任何子视图也将不可见或消失。通常,在必要时,我会以父视图的后面有半透明的黑色背景来进行此操作。并来回设置该视图的可见性。然后,您可以根据需要自定义按钮的功能以及视图的其余部分。