我试图在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. settext (yourdata)而不是edittext。因为EditText是可编辑的,EditText。text用于TextView

例如:

var name:String = "Muzammil"
edittext.setText(name)

这就是我的工作。

其他回答

如果你想使用getter .text from principle,使用:

nametxt.text = Editable.Factory.getInstance().newEditable(name)

使用setText(String)作为EditText。文本首先需要一个可编辑的,而不是字符串

为什么?

迈克尔在这个链接下给出了很好的解释。请访问这个链接了解更多细节

在为Java getter/setter对生成合成属性时,Kotlin首先查找getter。getter足以创建具有该getter类型的合成属性。另一方面,如果只有setter,则不会创建该属性。

当setter开始发挥作用时,属性创建变得更加困难。原因是getter和setter可能有不同的类型。此外,getter和/或setter可以在子类中被重写。

简单的解决方案

只需使用edittext. settext (yourdata)而不是edittext。因为EditText是可编辑的,EditText。text用于TextView

例如:

var name:String = "Muzammil"
edittext.setText(name)

这就是我的工作。

setText(String),所以你必须setText你的字符串到editText,所以在你的情况下是:nametext .setText(name)

使用setText(String),因为editText。text需要一个可编辑的,而不是字符串。