如何在kotlin中获取editText并使用toast显示。
var editTextHello = findViewById(R.id.editTextHello)
我尝试了这个,但显示了对象
Toast.makeText(this,editTextHello.toString(),Toast.LENGTH_SHORT).show()
你错过了从View
到findViewById
的EditText
演员:
var editTextHello = findViewById(R.id.editTextHello) as EditText
然后,您想要在吐司中显示text
的EditText
属性:
Toast.makeText(this, editTextHello.text, Toast.LENGTH_SHORT).show()
为了记录,这只是更像惯用的Kotlin相当于在你的getText()
上调用EditText
,就像你在Java中做的那样:
Toast.makeText(this, editTextHello.getText(), Toast.LENGTH_SHORT).show()
这是Kotlin,而不是java。你不需要得到它的id。在kotlin,只需写:
var editTextHello = editTextHello.text.toString()
使用kotlin的美丽;-)
P.s:BTW,最好选择像edx_hello这样的xml ID,对于kotlin部分,可以选择var editTextHello。然后你可以区分xml变量和kotlin变量。
投票的答案是正确的,但它不是Kotlin世界最好的答案。如果你真的有兴趣进入这个世界,我建议你使用扩展。从Kotlin你有kotlin-android-extensions
,你可以这样做:
import kotlinx.android.synthetic.reference_to_your_view.editTextHello
还有这个:
Toast.makeText(this, editTextHello.text, Toast.LENGTH_SHORT).show()
请忘记getText()...使用这个,它更干净。
ps:阅读有关扩展的内容,您将看到可以创建自己的扩展,并更加干净地使用Toast。像这样的东西:
fun Context.showToast(text: CharSequence, duration: Int = Toast.LENGTH_LONG) = Toast.makeText(this, text, duration).show()
并通过你的课程这样使用它:
showToast("uhuuu")
但这超出了我们在这里讨论的范围。
来自:https://kotlinlang.org/docs/tutorials/android-plugin.html
使用它而不是它工作正常
val obj=findViewById<EditText>(R.id.editText)
Toast.makeText(this,obj.text, Toast.LENGTH_LONG).show()
Toast.makeText(this, editTextHello.text.toString(), Toast.LENGTH_SHORT).show()
如果你使edittext
可以为空,那么这条线就是
Toast.makeText(this, editTextHello?.text.toString(), Toast.LENGTH_SHORT).show()
在Kotlin中,在EditText上调用.text是没有必要做getText或toString的
Toast.makeText(this, editTextHello.text, Toast.LENGTH_SHORT).show()
点击按钮
button?.setOnClickListener {
Toast.makeText(this,editText.text, Toast.LENGTH_LONG).show()
}
甚至不需要findViewById
使用editTextHello.text
Toast.makeText(this, editTextHello.text, Toast.LENGTH_SHORT).show()
你错过了从findViewById到EditText的视图转换。但如果控件存在则需要“if”然后获取文本:
val editText = findViewById(R.id.editText_main) as EditText
if (editText != null) {
val showString = editText.text.toString()
Toast.makeText(this, showString, Toast.LENGTH_SHORT).show()
}
保持Kotlin使用的标准语法
var editText:EditText = findViewById(R.id.editTextHello)