#android #kotlin
#Android #kotlin
Вопрос:
Я хочу сделать Kotlin в Android, но у меня есть некоторые проблемы с изменяемыми. Допустим, я делаю a 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)
}
Это работает, но tv?
каждый раз, когда я использую TextView, это запах кода. Есть ли лучший способ сделать это? Я чувствую, что должен использовать val
вместо var
, но я не могу найти способ вставить его.
Ответ №1:
Я знаю два способа решить эту проблему. Расширения Lateinit и Kotlin для Android.
Lateinit позволяет присваивать значение ненулевому типу позже в жизненном цикле классов.
lateinit var textView: TextView
override fun onCreate(savedInstanceState: Bundle?){
textView = findViewById(R.id.view_text)
}
Теперь вы можете получить к нему доступ без проверки null.
Или вы можете использовать расширения Kotlin.
Добавьте плагин в свой build.gradle
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
И импортируйте сгенерированные средства доступа в свою активность, фрагмент или что-то еще.
import kotlinx.android.synthetic.main.layout_name.*
text_view_id.text = "Hello World!"