我试图在EditText中设置文本,但它说:
Type mismatch.
Required: Editable
Found: String
我的代码如下:
String name = "Paramjeet"
val nametxt = findViewById (R.id.nametxt) as EditText
nametxt.text = name
不要说使用setText,因为我使用的是kotlin,而不是Java。
我试图在EditText中设置文本,但它说:
Type mismatch.
Required: Editable
Found: String
我的代码如下:
String name = "Paramjeet"
val nametxt = findViewById (R.id.nametxt) as EditText
nametxt.text = name
不要说使用setText,因为我使用的是kotlin,而不是Java。
当前回答
如果你想使用getter .text from principle,使用:
nametxt.text = Editable.Factory.getInstance().newEditable(name)
其他回答
或者你可以使用extension属性:
var EditText.value
get() = this.text.toString()
set(value) {
this.setText(value)
}
使用.value=代替.text=
或者转换为TextView,但我相信这应该在kotlin方面确定为方便开发人员!
(someEditText as TextView).text = "someTextValue"
或者有一些扩展:
val EditText.asTextView: TextView get() = this as TextView
var EditText.value: CharSequence?
get() = asTextView.text
set(value) {
asTextView.text = value
}
你可以这样写:
someEditText.asTextView.text = "someTextValue"
or
someEditText.value = "someTextValue"
但遗憾的是,您不能编写简单的someEditText。text = "someTextValue"
看一下EditText的API:
CharSequence文本,TextView。BufferType类型)
可编辑的获取文本()
链接:https://developer.android.com/reference/android/widget/EditText.html
简单的解决方案
只需使用edittext. settext (yourdata)而不是edittext。因为EditText是可编辑的,EditText。text用于TextView
例如:
var name:String = "Muzammil"
edittext.setText(name)
这就是我的工作。
我在我的项目中也有同样的问题,我给你一个例子,展示了如何检索和设置Kotlin布局中的数据: 有一个按钮save_button和两个文本编辑字段edit_name和edit_password。
//when cliquing on the button 'save_button'
save_button.setOnClickListener {
// geting the value from the two fields by using .text.toString()
val email = edit_name.text.toString()
val password = edit_password.text.toString()
// showing the result on the systeme's log
Log.d("Main activity","your email is " + email )
Log.d("Main activity", "your password is $password" )
// Then shows these values into the text view palete using .setText()
text_view.setText("$email " + "$password")
}