Ich versuche, Datenbindungsbibliothek in meinem Projekt zu verwenden, das in Kotlin geschrieben wird. Ich benutze Kotlin v.1.0.2 & Gradle Plugin v. 2.12 und mit Bindung Compiler. Mein build.gradle wie folgt konfiguriert:Datenbindung Kotlin Android Studio Fehler
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"
}
In meinem Fragment Layout erklärte ich <data>
Block mit einigen Variablen:
<?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>
Und dann in meiner AuthorizationFragment.kt
Klasse Ich stelle diese Variablen:
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
}
Und das Problem ist, obwohl dieser Code erfolgreich kompiliert und APK baut, markiert Android Studio diese Zeilen
binding?.presenter = presenter
binding?.model = Model()
als ungültig und zeigt den folgenden Fehler: Cannot access class 'com.xxx.ui.authorization.AuthorizationPresenter'. Check your module classpath for missing or conflicting dependencies
. Ich habe versucht, kapt 'com.google.guava:guava:19.0'
zu meinem build.gradle
hinzuzufügen, aber nichts hat sich geändert. Auch erwähnenswert ist, dass dieses Problem nur auftritt, wenn ich mein Fragment in Kotlin schreibe, wenn es in Java geschrieben ist, ist alles in Ordnung.
Es ist ein bekannter Ausgabe https://youtrack.jetbrains.com/issue/KT-12402 –
Ja, danke. Sehr nützlicher Tracker für diejenigen, die Kotlin benutzen. Scheint so etwas wie Kotlin Lint, denke ich –