android - 应用程序崩溃,因为迟到的 init 属性尚未在 android studio 中初始化
问题描述
我有一个按钮,当我单击它时,它应该显示警报对话框,但是当我单击该按钮时应用程序崩溃我知道代码流程是这样的,但我不知道我在哪里做错了
private lateinit var btn: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dynam)
btn = findViewById(R.id.add1)
buildDialog()
btn.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
dialog.show()
}
})
}
private fun buildDialog() {
val builder=android.app.AlertDialog.Builder(this)
val view=layoutInflater.inflate(R.layout.dialog_dynam,null)
val name= view.findViewById<EditText>(R.id.nameEdit)
builder.setView(view)
builder.setTitle("Enter name")
.setPositiveButton("Ok",object :DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, p1: Int) {
addname(name.text.toString())
}`
解决方案
我认为你有dialog
一个变量,你忘了在函数lateinit
中分配它。buildDialog
private lateinit var btn: Button
private lateinit var dialog:AlertDialog
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dynam)
btn = findViewById(R.id.add1)
buildDialog()
btn.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
if (this@YourActivity::dialog.isInitialized) { // to check if dialog is initialize or not
dialog.show()
}
}
})
}
private fun buildDialog() {
val builder=android.app.AlertDialog.Builder(this)
val view=layoutInflater.inflate(R.layout.dialog_dynam,null)
val name= view.findViewById<EditText>(R.id.nameEdit)
builder.setView(view)
builder.setTitle("Enter name")
.setPositiveButton("Ok",object :DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, p1: Int) {
addname(name.text.toString())
// initialize dialog
dialog = builder.create()
}
推荐阅读
- node.js - 与前端应用程序共享 Prisma 类型?
- javascript - 在 bootstrap vue 中使用 @change 传递参数*和*单击的值
元素 - java - 我怎样才能坚持使用@Formula?
- python - 为数据框中列的每一行提取历史值,并在 Python 中将它们连接在一起
- javascript - 使用 Laravel 构建 API 仅在通过 javascript 调用时返回空对象......有时
- postgresql - 在 Azure Postgres SQL 数据库中检索日志
- tcp - TCP:为什么我们需要流量控制和拥塞控制
- python-3.x - 环境温度和风速数据集的可靠来源?
- asp.net-core - 当前 UoW 事务成功完成后,如何发布自定义事件?
- google-apps-script - 如何在谷歌电子表格中进行数据自动更新?