Vinculación de datos de los errores del estudio Android de Kotlin
Estoy tratando de utilizar la biblioteca de enlace de datos en mi proyecto, que está escrito en Kotlin. Estoy usando Kotlin v.1.0.2 y Gradle plugin v. 2.12 y con el compilador de enlace. Mi build.gradle configurado de la siguiente manera:
android { dataBinding { enabled = true } } kapt { generateStubs = true } dependencies { kapt "com.google.dagger:dagger-compiler:2.2" provided "org.glassfish:javax.annotation:10.0-b28" kapt "com.android.databinding:compiler:2.12" }
En mi esquema Fragment declaré el bloque <data>
con algunas variables:
- Android studio 2.3: No se pudo inicializar la clase org.jetbrains.kotlin.android.actions.NewKotlinActivityAction
- ¿Cómo realizar una solicitud de API en Kotlin?
- Kotlin: Cómo trabajar con Casts de listas: Desmarcado Cast: kotlin.collections.List <Kotlin.Any?> A kotlin.colletions.List <Waypoint>
- Error al ejecutar el proyecto de Android (escrito en Kotlin) compilado con el complemento Gradle2.0.0-alpha
- Android Studio 3 canary y Kotlin
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.view.View"/> <import type="com.xxx.ui.AuthorizationPresenter"/> <import type="com.xxx.entity.AuthProvider"/> <variable name="model" type="com.xxx.ui.authorization.Model"/> <variable name="presenter" type="com.xxx.ui.authorization.AuthorizationPresenter"/> </data> <FrameLayout ... /> </layout>
Y luego en mi clase AuthorizationFragment.kt
estoy configurando estas variables:
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { binding = FragmentAuthorizationBinding.inflate(inflater) binding?.presenter = presenter binding?.model = Model() binding?.addOnRebindCallback(object : OnRebindCallback<FragmentAuthorizationBinding>() { override fun onPreBind(binding: FragmentAuthorizationBinding?): Boolean { val sceneRoot = binding?.root as ViewGroup TransitionManager.beginDelayedTransition(sceneRoot) return true } }) return binding?.root }
Y el problema es que este código compila y construye con éxito APK, el estudio de Android marca estas líneas
binding?.presenter = presenter binding?.model = Model()
Como no válido y muestra el siguiente error: Cannot access class 'com.xxx.ui.authorization.AuthorizationPresenter'. Check your module classpath for missing or conflicting dependencies
Cannot access class 'com.xxx.ui.authorization.AuthorizationPresenter'. Check your module classpath for missing or conflicting dependencies
. Intenté agregar kapt 'com.google.guava:guava:19.0'
a mi build.gradle
, pero nada ha cambiado. También vale la pena mencionar que el problema sólo aparece cuando escribo mi fragmento en Kotlin, cuando está escrito en Java todo está bien.
- Mejora del análisis de Java / Kotlin JSON
- Usar kotlin con ContentResolver causó una excepción de IllegalArgumentException
- ¿Cómo utilizar Android Support typedef anotaciones en kotlin?
- ¿Cómo acceder a "Activity.this" en Kotlin?
- Constantes en Kotlin - ¿cuál es la forma recomendada de crearlas?
- La construcción de kapt falla con el procesador Android de Dagger
- ¿Tiene Kotlin personalizado obtener la llamada al método de ejecución
- ¿Hay alguna manera de reutilizar una instancia de Job?
Hasta que el IDE muestre el error, puede usar esto:
binding.setVariable(BR.model, Model())
No es tan conciso como forma kotlin, pero el color rojo no te vuelve loco más;)