首页 > 解决方案 > 如何使用 Kotlin 从用户那里获取名称并将其显示在 Toast 中?

问题描述

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

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()
}

标签: androidkotlinandroid-edittext

解决方案


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()

推荐阅读