Joe*_*oel 6 java android kotlin
Android Studio 催促我将 Kotlin 项目从 1.3.61 更新到 1.4.0 版,所以我这样做了,但后来我在标题中遇到了异常。我在带有 API 29 的模拟器中运行了代码。代码等效于以下内容:
val tv : TextView = androidx.appcompat.widget.AppCompatEditText(applicationContext)
tv.text = "Hello StackOverflow!"
val s = tv.text.toString()
Run Code Online (Sandbox Code Playgroud)
而那个异常是由tv.text.toString(). 我觉得这很奇怪,因为它在更新之前就起作用了,据我所知,代码等效于tv.getText().toString(). 但是后者有效,而前者无效。
这也有效:
val tv : TextView = androidx.appcompat.widget.AppCompatEditText(applicationContext)
tv.setText("Hello StackOverflow!")
val s = tv.text.toString()
Run Code Online (Sandbox Code Playgroud)
这也有效:
val tv : TextView = androidx.appcompat.widget.AppCompatEditText(applicationContext)
tv.text = "Hello StackOverflow!"
val s = (tv.text as CharSequence).toString()
Run Code Online (Sandbox Code Playgroud)
这是正确的行为吗?如果是这样的话,如果有人能解释发生了什么,我将不胜感激。
所以总而言之,如果我使用 Kotlin 属性语法tv.text来设置和获取值,我会得到异常。如果我明确使用tv.getText()OR tv.setText(),它会起作用。tv.text如果我引入显式强制转换(我真的不明白为什么需要它,因为tv.text已经应该返回 a CharSequence),则可以使设置和获取值起作用。
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |