【问题标题】:Handling mutable variables in multiple functions in Kotlin Android在 Kotlin Android 中处理多个函数中的可变变量
【发布时间】:2023-03-07 05:27:01
【问题描述】:

我想在 Android 中使用 Kotlin,但我遇到了一些可变变量的问题。假设我正在做一个可以跨多种方法访问的TextView

var tv: TextView? = null

override fun onCreate(savedInstanceState: Bundle?) {
    tv = find(R.id.tv)
}

fun clearText(){
    tv?.setText("")
}

fun setText(text: String) {
    tv?.setText(text)
}

这可行,但每次我使用 TextView 时都有tv? 是代码异味。有没有更好的方法来做到这一点?我觉得我应该使用val 而不是var,但我找不到插入它的方法。

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    我知道有两种方法可以解决这个问题。 LateinitKotlin's Android extensions

    Lateinit 允许您在类生命周期的后期为非空类型赋值。

    lateinit var textView: TextView
    
    override fun onCreate(savedInstanceState: Bundle?){
      textView = findViewById(R.id.view_text)
    }
    

    您现在可以在没有空检查的情况下访问它。

    或者,您可以使用 Kotlin 的扩展。

    将插件添加到您的 build.gradle

    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    

    并将生成的访问器导入到您的 Activity、Fragment 或其他任何东西中。

    import kotlinx.android.synthetic.main.layout_name.*
    
    text_view_id.text = "Hello World!"
    

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多