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!" 
  • El uso de Kotlin "apply in companion object" arroja un error inesperado
  • "Prefiere ejecutar el procesador daga sobre esa class en su lugar" en Kotlin
  • aplicación kotlin springboot - ¿por qué no funciona con cuerpo de expresión?
  • ¿Cómo especifico que un campo encuadrado puede ser anulable en mi código de migration de Realm?
  • ¿Cómo negar una expresión booleana cuando se usa el operador elvis en kotlin?
  • ¿Hay alguna manera de tener un file privado constante en Kotlin?
  • ¿Por qué agregar una Vista a mi layout cambia el ancho de todo el layout?
  • msg: ¿No se puede encontrar el getter para el atributo 'android: text' con el tipo de valor java.lang.String en el data binding?
  • La request de permiso en time de ejecución no funciona
  • Pasar datos a un BroadcastReceiver desde un PendingIntent (AlarmManager)
  • Ir a la siguiente actividad en Android Kotlin; Referencia de class no resuelta