OnClick y TextView en Android Studio 3

Estoy haciendo un juego de clicker básico. Para quienes no son usuarios de telefonía mobile: (En el time en que se hace clic en el button, se agrega 1 al valor de la vista de text) que comienza en 0, por supuesto. Esto es lo que tengo, pero hay un error en "como" que dice que este reparto nunca tendrá éxito (aplastando mis sueños)

fun click(v: View){ textView.text as Int + 1 } 

Oh si. No funcionará porque textView.text es una CharSequence , que nunca podrá convertir a Int . Esto se vuelve aún más complicado porque no se puede tratar una CharSequence como si fuera una String . Lo que debe hacer es convertir el text en una String , analizar el número actual en la vista de text, convertirlo en una Int y luego volver a agregarlo al object textView .

Algo como esto:

 fun click(v: View){ val currentText = textView.text.toString() //Make sure that this will always be a number or you'll get an exception! val currentNumber = currentText.toInt() textView.text = currentNumber.plus(1).toString() } 

También puede hacerlo todo en una sola línea, pero lo anterior es mucho más limpio:

 textView.text = textView.text.toString().toInt().plus(1).toString() 

El comstackdor le dice que es imposible convertir el text (CharSequence) a un Int como lo menciona el usuario2759839.

Pero más allá del simple error de syntax, no debería tener que leer nada de textView. En vista general, los objects no deberían contener el estado. Deben capturar la input del usuario o mostrar información.

Lo que debe hacer es crear una variable privada para mantener el estado de conteo de clics, actualizar eso y luego simplemente usar TextView para mostrar el valor.

algo así.

 private var clickCount = 0 fun click(v: View) { clickCount += 1 textView.text = "$clickCount" } 

Esto tiene el beneficio adicional de que no tiene que preocuparse por la exception que se puede lanzar si el toInt () fallaba.

  • Anulación accidental: las siguientes declaraciones tienen la misma firma de JVM
  • ¿Cómo funcionan las funciones de extensión de Kotlin?
  • Extienda la comprobación de Mockito para que Kotlin no funcione (de manera "kotlin")
  • Prueba unitaria de la function de extensión de Kotlin en las classs de Android SDK
  • Cómo crear callbacks de funciones anidadas como anko - syntax DSL Kotlin
  • El tipo Out-Projected 'ArrayList <*>' prohíbe el uso de 'public fun fun add (índice: Int, elemento: E): Unidad definida en java.util.ArrayList'
  • ¿Cómo crear un button en Kotlin que abre una nueva actividad (Android Studio)?
  • Clases de Kotlin sin llaves
  • Por qué los numbers que aceptan nulos no son para preservar la identidad
  • Android Kotlin Extension super calling