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.

  • No se puede acceder a EditText u otros componentes de la interfaz de usuario con Kotlin
  • Kotlin || ¿No puedo agregar la biblioteca a Mi aplicación?
  • Por qué los numbers que aceptan nulos no son para preservar la identidad
  • Clase Kotlin no encontrada
  • El tipo Out-Projected 'ArrayList <*>' prohíbe el uso de 'public fun fun add (índice: Int, elemento: E): Unidad definida en java.util.ArrayList'
  • Android Kotlin Extension super calling
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos
  • Prueba unitaria de la function de extensión de Kotlin en las classs de Android SDK
  • ¿Cómo funcionan las funciones de extensión de Kotlin?
  • Extensión sintética Kotlin para ver