如何使用 Kotlin 从用户那里获取名称并将其显示在 Toast 中?

How to get a name from the user and display it in a Toast using Kotlin?

我制作了一个自定义对话框,其中包含 EditText 让用户输入他的名字。当用户单击 "SAVE" 我想在 Toast 中显示他的名字。我编写了下面的代码,但是当我单击 "SAVE" 时应用程序一直停止。我想知道错误在哪里?

change_name.setOnClickListener {
    val builder = AlertDialog.Builder(this)
    val inflater =  LayoutInflater.from(this).inflate(R.layout.dialog_name,null,false)
    builder.setView(inflater)
    builder.setPositiveButton("SAVE") { dialog, id ->
        val name = entered_name.text.toString()
        Toast.makeText(this,name,Toast.LENGTH_LONG).show()
    }

    builder.create().show()
}

Omar 欢迎来到 SO 社区。

在您的代码中,您正在做的是创建自定义对话框并调用对话框提供的肯定按钮onClick我确定您的代码在这行代码处崩溃

val name = entered_name.text.toString()

因为它没有直接得到你EditText的合成属性。

您需要稍微修改一下代码。

val builder = AlertDialog.Builder(this)
val inflater =  LayoutInflater.from(this).inflate(R.layout.dialog_name,null,false)
builder.setView(inflater)
val yourEditText :EditText = inflater.findViewById(R.id.entered_name)
builder.setPositiveButton("SAVE") { dialog, id ->
    val name = yourEditText.text.toString()
    Toast.makeText(this,name,Toast.LENGTH_LONG).show()
}

builder.create().show()