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.

  • Android Kotlin Extension super calling
  • Extienda la comprobación de Mockito para que Kotlin no funcione (de manera "kotlin")
  • Clases de Kotlin sin llaves
  • No se puede acceder a EditText u otros componentes de la interfaz de usuario con Kotlin
  • Extensiones en Kotlin
  • Kotlin || ¿No puedo agregar la biblioteca a Mi aplicación?
  • Obligatorio <Objeto> y encontrado <Objeto>?
  • La biblioteca de Android no puede comstackr 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'
  • Extensión sintética Kotlin para ver