AndroidAnnotations – ViewById no se puede utilizar en un elemento privado

Versión AndroidAnnotations: 4.3.1

Versión del SDK de compilation de Android: 26

Versión de Kotlin: 1.1.3-2

Estoy intentando crear aplicaciones usando Kotlin y AndroidAnnotaions. La construcción termina con

Error:Execution failed for task ':app:kaptDebugKotlin'. > Internal compiler error. See log for more details 

en androidannotations.log a es un montón de erros como

 00:10:43.908 [RMI TCP Connection(91)-127.0.0.1] ERROR oaipModelValidator:77 - org.androidannotations.annotations.ViewById cannot be used on a private element 

ese es el uso de la anotación @ViewById

 @ViewById var description: TextView? = null 

Lo mismo sucede con los vars anotados con Pref.

¿Alguien más está enfrentando el mismo problema o soy solo yo?

Intenta usar lateinit :

 @ViewById lateinit var description: TextView 

La razón de get este error puede deberse al comportamiento del campo de respaldo. Es invisible de forma pnetworkingeterminada y el identificador de field solo se puede usar en los descriptores de acceso de la propiedad. Es por eso que tienes @ViewById cannot be used on a private element .

La razón por la cual lateinit funciona es porque cambia el acceso al campo. De acuerdo con el documento de Kotlin :

Las properties de Inicialización Tardía también están expuestas como campos. La visibilidad del campo será la misma que la visibilidad del establecedor de properties tardío.

Entonces, @JvmField es otra solución para este problema.

 @ViewById @JvmField var helloTextView: TextView? = null 

También cambia la visibilidad del campo como lo dice el documento:

Si necesita exponer una propiedad de Kotlin como un campo en Java, debe anotarla con la anotación @JvmField. El campo tendrá la misma visibilidad que la propiedad subyacente. Puede anotar una propiedad con @JvmField si tiene un campo de respaldo, no es privado, no tiene modificadores de abrir, anular o const, y no es una propiedad delegada.

También puede consultar este ejemplo y los documentos de Kotlin sobre los frameworks de Android utilizando el process de anotación.

  • La class Kotlin no obtiene su valor boolean de firebase
  • Escribir Daos del reino con transactions cerradas
  • ¿Cómo puedo usar un model de vista, con sqlite y un receptor de difusión para actualizar la UI?
  • ¿Cómo acceder al argumento constructor que no es variable miembro en la function init?
  • Error de complemento: Kotlin lanzó una IllegalStateException no detectada
  • Traducir de Java a Kotlin OnClickListener
  • No se puede crear un oyente de events de datos de spring en Kotlin
  • ¿Tiene Kotlin una function de "enumerar" como Python?
  • Cómo anular correctamente un método que devuelve una instancia de class genérica en Kotlin
  • ¿Cómo eliminamos elementos de una MutableList en Kotlin?
  • Cómo evitar la cobertura parcial con campos tardíos en Kotlin