viernes, 8 de diciembre de 2017

Nota fácil y a tortas con Kotlin



He sacado nuevas versiones para corregir algunos problemas de usabilidad de la aplicación.

En concreto, estás viendo la lista de la nota y digamos que editas una que está a mitad. Ahora cuando dabas al botón guardar, la lista de notas se desplazaba a la primera y tenías que desplazarte hasta la nota para ver el cambio. Ahora ya no sucede eso, el programa "recuerda" dónde estabas.

 De paso que aprovechaba para corregir el error he puesto a migrar la aplicación de Kotlin, para los que estéis puesto en la programación de Android se trata del nuevo lenguaje de programación que ha sacado Google y que en otra entrada analizaré.

La migración de código no es muy complicada, lleva un conversor de código Kotlin automático. Además hay que hacer una serie de correcciones porque quedan algunos errores por corregir.

Pues bien, no me explico por qué , quizás sea un bug del SDK o lo más problable que sea una metida de pata mía y no sé por qué el botón de opciones falla. Os pongo en situación: presumiendo delante de un amigo de aplicación, que fíjate tú que tiene más de 100 descargas activa. Pues va se la instala y al primer botón que da crah. Menuda situación. Os pego la pantalla funcionando:


Se trata de la opción de sacar un menú contextual llamando a openContextMenu que da el siguiente error:
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter menuInfo

El caso que en ese parámetro que le paso a openContextMenu no es nulo. He tenido que echar para atrás la implementación en kotlin de esa actividad y ya funciona correctamente.



1 comentario:

  1. Hola, creo que he tenido el mismo problema que tu.
    Tambien estoy pasando una app a Kotlin y tambien me daba un error al mostrar un menu contextual, el mismo que comentas. Te cuento como lo he arreglado por si te sirve...
    En mi caso es porque el conversor automatico del Android Studio genera la siguiente llamada:
    override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo) {
    pero parece que los 3 parametros tienen que ser nullables, la llamada quedaría asi:
    override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?)

    Un saludo.



    ResponderEliminar