【发布时间】:2018-05-19 21:54:33
【问题描述】:
我必须在按钮上单击两次(任意:正面、中性和负面)才能关闭 AlertDialog。
import android.annotation.SuppressLint
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.view.KeyEvent
import android.view.View
import com.example.said.puntodeventa.R.layout.layout_addproduct
class someClass : AppCompatActivity() {
@SuppressLint("StringFormatInvalid")
private fun someDialog(){
AlertDialog.Builder(this).apply {
setTitle("title")
setMessage("message")
setNegativeButton("No"){ dialog, which ->
anEditText.text.clear()
anEditText.requestFocus()
dialog.cancel()
dialog.dismiss()
}
setNeutralButton("Neutral"){ dialog, which ->
someEditText.text.clear()
someEditText.requestFocus()
dialog.cancel()
dialog.dismiss()
}
setPositiveButton("Yes") { dialog, which ->
addProduct()
dialog.cancel()
dialog.dismiss()
}
create()
show()
}
}
private fun addProduct(){
//some code working properly
}
}
addProduct() 和 .text.clear() 可以完美运行,但 AlertDialog 在我第一次单击时没有关闭。
我曾尝试单独使用dialog.cancel()、dialog.dismiss(),但似乎没有任何效果,就像代码不存在一样。
我也尝试过 import android.app.AlertDialog,结果相同。
这是我单击任何按钮时日志中的红色文本,无论是第一次(AlertDialog 未关闭时)还是第二次(实际关闭时)。
05-19 16:42:34.543 24647-24647/com.example.name.appdemo E/ViewRootImpl: sendUserActionEvent() mView == null
谢谢
【问题讨论】:
-
我不熟悉 Kotlin,但按钮定义中不应该有
DialogInterface.OnClickListener吗?dialogBuilder.setNegativeButton("OK", DialogInterface.OnClickListener { dialog, whichButton -> //pass })之类的东西? -
developer.android.com/reference/android/app/… 在使用 dialog.cancel() 时检查此文档,它正在取消您的对话框,因此您无法关闭它
-
请检查我的答案,它不需要 DialogInterface.OnClickListener 并且我只使用了 dialog.dismiss() 并且仍然需要单击两次才能关闭。谢谢
标签: android kotlin android-alertdialog