textView.setText(string)和textView.text = $ string有什么区别

时间:2019-07-16 11:42:06

标签: android kotlin

嗨,我正在用 Kotlin 制作应用程序,发现我俩都可以使用

textView.setText(str)

textView.text = $str

我想知道我应该使用什么以及它们之间的区别。 谢谢。

5 个答案:

答案 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(“…”)

Ref-Begin Kotlin; from an Activity, a Button and a TextView

答案 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