Manejo de variables mutables en múltiples funciones en Android Kotlin

Quiero hacer Kotlin en Android, pero tengo algunos problemas con las tablas mutables. Digamos que estoy haciendo un TextView que se accede a través de múltiples methods.

 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) } 

Esto funciona, pero tener tv? cada vez que uso TextView es un olor a código. ¿Hay una mejor manera de hacer esto? Siento que debería usar val lugar de var pero no puedo encontrar la forma de ponerlo.

Hay dos forms que conozco para resolver esto. Extensiones de Android de Lateinit y Kotlin .

Lateinit le permite asignar un valor a un tipo no nulo más adelante en la vida útil de las classs.

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

Ahora puede acceder sin una verificación nula.

O bien, puedes usar las extensiones de Kotlin.

Agregue el complemento a su build.gradle

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

E importa los accesos generados a tu Actividad, Fragmento o lo que sea.

 import kotlinx.android.synthetic.main.layout_name.* text_view_id.text = "Hello World!" 
  • ¿Cómo puedo crear una instancia de un object usando valores de parameters de constructor pnetworkingeterminados en Kotlin?
  • ¿Cómo paso solo un parámetro a una function cuando espera dos?
  • Moshi: se esperaba una Clase, Tipo Paramétrico o Tipo de Armario Genérico, pero <nulo> es de tipo nulo
  • ¿Cómo modificar un prefijo de una secuencia de Kotlin pero retener la queue?
  • Buscando con RxJava no funciona
  • ¿Cómo dividir una cadena y plantar los delimitadores entre las partes divididas en Kotlin?
  • ¿Alternativas al campo de las strings de boxeo o extendiendo TODAS las strings en Kotlin?
  • Error: ejecución fallida para la tarea ': app: javaPreCompileDebug'. > java.io.IOException: no se pudo eliminar annotationProcessors.json
  • Ignorar ciertas properties al generar equals (), hashCode (), etc.
  • Cómo get la position de OnScroll en WebView Android
  • el timer se bloquea con KotlinNullPointerException dentro del fragment