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.

  • Nullablity de los attributes generados por DB
  • Genéricos para RecyclerView.Adapter Android
  • Construcción de proyecto de gradle de varios modules en Travis CI
  • Kotlin: ¿Cómo puedo permitir que Android Studio implemente la function de la interfaz en la parte inferior de la class
  • ¿Cuál es el objective pnetworkingeterminado para una anotación al anotar properties en Kotlin?
  • Cómo establecer una propiedad estática en una class en Kotlin para Javascript
  • ¿Cómo implementar la function genérica de Interface en Kotlin?
  • Luchando por intentar get una image de la camera para cargarla en Firebase - java.lang.IllegalStateException: uri no debe ser nulo
  • Spring Boot ThymeLeaf y Kotlin: ¿el valor de la casilla no se pasa al controller?
  • Kotlin, cómo probar (int) array
  • comstack código mixto de Kotlin y Java desde la línea de command