Par*_*ngh 101 android android-edittext kotlin
我试图在edittext中设置文本,但它说类型不匹配必需可编辑找到字符串我的代码如下
Type mismatch.
Required: Editable
Found: String
Run Code Online (Sandbox Code Playgroud)
不要说使用SetText,因为我使用的是kotlin而不是java
nha*_*man 236
使用setText(String),因为editText.text期望Editable,而不是String.
Evg*_*lov 15
如果您想.text从原则上使用getter ,请使用:
nametxt.text = Editable.Factory.getInstance().newEditable(name)
Run Code Online (Sandbox Code Playgroud)
BNY*_*BNY 14
这里有几个工作答案,但是如果您仍然想要使用属性格式并让代码看起来干净,那么您可以编写一个扩展名:
fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this)
Run Code Online (Sandbox Code Playgroud)
然后你可以这样使用它:
mEditText.text = myString.toEditable()
Run Code Online (Sandbox Code Playgroud)
Ren*_*tik 10
或者投射到,TextView但我相信这应该在 kotlin 端修复,以方便开发人员!
(someEditText as TextView).text = "someTextValue"
Run Code Online (Sandbox Code Playgroud)
或者使用一些扩展:
val EditText.asTextView: TextView get() = this as TextView
var EditText.value: CharSequence?
get() = asTextView.text
set(value) {
asTextView.text = value
}
Run Code Online (Sandbox Code Playgroud)
你可以写:
someEditText.asTextView.text = "someTextValue"
Run Code Online (Sandbox Code Playgroud)
或者
someEditText.value = "someTextValue"
Run Code Online (Sandbox Code Playgroud)
但遗憾的是你不能 写简单的someEditText.text = "someTextValue"
或者您可以使用扩展属性:
var EditText.value
get() = this.text.toString()
set(value) {
this.setText(value)
}
Run Code Online (Sandbox Code Playgroud)
并使用.value=代替.text=
小智 6
简单的解决方案
只需使用edittext.setText(yourdata) 而不是edittext.text因为EditText是可编辑的,edittext.text而是用于TextView
例如:
var name:String = "Muzammil"
edittext.setText(name)
Run Code Online (Sandbox Code Playgroud)
这就是它对我的工作。
| 归档时间: |
|
| 查看次数: |
52757 次 |
| 最近记录: |