【发布时间】:2017-10-18 19:30:47
【问题描述】:
定义全局android.widget 变量时,例如TextView,最好使用lateinit 还是by lazy?我最初认为使用 by lazy 会更好,因为它是不可变的,但我不完全确定。
by lazy 示例:
class MainActivity: AppCompatActivity() {
val helloWorldTextView by lazy { findViewById(R.id.helloWorldTextView) as TextView }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
updateTextView(helloWorldTextView)
}
fun updateTextView(tv: TextView?) {
tv?.setText("Hello?")
}
}
lateinit 示例:
class MainActivity: AppCompatActivity() {
lateinit var helloWorldTextView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
helloWorldTextView = findViewById(R.id.helloWorldTextView) as TextView
updateTextView(helloWorldTextView)
}
fun updateTextView(tv: TextView?) {
tv?.setText("Hello?")
}
}
在定义全局android.widget var/val 时,使用其中一个有什么好处?使用by lazy 定义android.widget val 是否有任何陷阱?该决定是否仅基于您想要一个可变值还是不可变值?
【问题讨论】:
标签: android-studio android-widget kotlin