嗨,我正在用 Kotlin 制作应用程序,发现我俩都可以使用
textView.setText(str)
和
textView.text = $str
我想知道我应该使用什么以及它们之间的区别。 谢谢。
答案 0 :(得分:0)
textView.setText(str)
和textView.text = $str
执行将指定的str
设置为TextView
的相同工作。我唯一能想到的是,
textView.setText(str) // old Java way of setting Text
,其中调用了方法 setText(str)。
textView.text = $str //new Kotlin way of setting Text
,其中,调用合成属性而不是方法。
答案 1 :(得分:0)
与Kotlin一样,您没有使用findViewById
因此要访问您的textView,import语句必须像这样
import kotlinx.android.synthetic.main.<layout>.*
textView.text = $str
是Kotlin插件为Android提供的综合属性访问权限
您可以同时使用两者,但可用性上并没有太大区别,但是可以简化代码编写 这样会更好
有关更多信息,请阅读此https://kotlinlang.org/docs/tutorials/android-plugin.html
答案 2 :(得分:0)
两者的工作方式相同。
Java约定
textView.setText(“…”)
科特林公约
textView.text=”…”
“遵循getter和setter的Java约定的方法(名称以get开头的无参数方法和名称以set开头的单参数方法在Kotlin中表示为属性。”-documentation < / p>
如果您使用Kotlin遵守Kotlin约定,则用textView.text=”…”
代替textView.setText(“…”)
。
答案 3 :(得分:0)
在大多数情况下,它们是相同的。 ,基本上,Kotlin会根据它们的吸气剂为类属性生成一个综合属性,您可以使用该属性来为其分配值并从中获取值。
//So, for most cases
textView.setText("some value");
//Is the same as
textView.text = "some value"
//The second is simply shorter and is the 'kotlin way' of assigning values
在大多数情况下,这可以正常工作。但是,如上所述,合成属性是从吸气剂产生的,如果也有吸气剂,则会出现问题。原因是getter和setter的可能具有不同的类型。例如,EditText
具有Editable
吸气剂,现在,kotlin创建了类型为text
的合成属性Editable
。
editText.setText("some value"); //Works
editText.text = "some value" //Won't work, will show an error stating that expected type is Editable
答案 4 :(得分:0)
方法setText()
和getText()
分别称为setter和getter,它们在kotlin中自动生成。
class ClassName{
var name: String= "some_value"
}
您可以直接将name
属性与该类的对象一起使用,也可以使用自动生成的setter
方法。
class Another{
var c = ClassName()
c.name = "value"
c.setName("value")
}
但是,如果属性以val
而不是var
开头,则它是不可变的,并且不允许setter
。
如果您想进一步阅读:
Setters and getters in kotlin