Ich habe folgende Fragmentklasse in Java mit der neuen Datenbindungsbibliothek geschrieben
import com.example.app.databinding.FragmentDataBdinding;
public class DataFragment extends Fragment {
@Nullable
private FragmentDataBinding mBinding;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false);
return mBinding.getRoot();
}
}
Es kompiliert und läuft gut.
Ich habe versucht, es in Kotlin umzuschreiben, und dabei Folgendes gefunden:
import com.example.app.databinding.FragmentDataBdinding
class ProfileFragment : Fragment() {
private var mBinding: FragmentDataBinding? = null
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false)
return mBinding!!.getRoot()
}
}
Jetzt :app:compileDebugKotlin
gibt step jedoch Folgendes aus:
Fehler: (16, 38) Nicht aufgelöste Referenz: Datenbindung
Fehler: (37, 27) Nicht aufgelöste Referenz: FragmentDataBinding
Wie kann ich die Android-Datenbindungsbibliothek mit Kotlin verwenden?
Meine oberste Ebene build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.android.databinding:dataBinder:1.0-rc4'
}
}
allprojects {
repositories {
jcenter()
}
}
Mein build.gradle
In-App-Verzeichnis (nur relevante Teile):
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
apply plugin: 'kotlin-android'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
ext.kotlin_version = '0.14.451'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
repositories {
mavenCentral()
maven {
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
}
Ich verwende Android Studio 1.4, Build Tools Version 23.0.1, Android SDK 23, SDK Tools 24.4.0
java
android
kotlin
android-databinding
Mikhail
quelle
quelle
apply plugin: 'kotlin-kapt'
in der App Gradle-Datei in der neuesten Version haben.Antworten:
Versuchen Sie diese Konfiguration zu verwenden:
In main build.gradle :
App build.gradle :
quelle
2.2.0-alphaX
ist verfügbar, und zu Ihrer Information ist die Version der Datenbindung dieselbe wie die des Android-Gradle-Plugins selbst. Sie können diese Version also externalisieren und als Compilerversion verwenden.apply plugin: 'kotlin-kapt'
. Siehe stackoverflow.com/a/42974558/1916449Ich habe eine neue Lösung gefunden, hoffe sie hilft dir.
Überprüfen Sie zunächst, ob das Plugin angewendet wurde:
dann
Möglicherweise liegt ein Fehler in der Abhängigkeit vor:
VERWENDEN
anstatt
Sie können hier für eine neue Version besuchen
Danke dir.
quelle
Update 2: Dies ist eine wirklich alte Antwort. Beziehen Sie sich stattdessen auf die Antwort von lrampazzo.
Es funktioniert mit 1.0-rc4, setzen
in Ihre Abhängigkeiten
Danke Ghedeon für den Link in den Kommentaren
Update : Hier ist ein wirklich einfaches Hallo-Welt-Beispielprojekt
quelle
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. Haben Sie die gleichen Fehler? Und was ist deine Android Studio Version?Die Version des Datenbindungs-Compilers entspricht der Gradle-Version in Ihrer Projektdatei build.gradle:
und die gradle version ist
Hier ist ein Beispiellink zum Abschluss der Verwendung der Datenbindungsbibliothek in Kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
quelle
dataBinding.enabled = true
war das, was ich vergessen habeUm das Problem zu lösen, müssen Sie setzen
Fügen Sie diese Zeile oben in build.gradle (Modul: App) in Abhängigkeiten ein
Sie können die Android Plugin Version finden, indem Sie zum Menü gehen
Dann erneut synchronisieren. Wenn Sie diese Warnung sehen, ignorieren Sie sie.
quelle
Versuchen Sie dies.Andrid Studio 2.0 (2.1)
In build.gradle
In meinem Projekt:
buildToolsVersion = "23.0.3"
in der obersten Ebene build.gradle
quelle
diese arbeit für mich in androidStudio ver3.1.3
quelle
Konfigurationsdatenbindung in Kotlin
build.gradle (Ordner-App)
Viel Spaß mit Kotlin ...
quelle
Wichtiges Update
Sie können in der Dokumentation von Android sehen.
So aktualisieren Sie einfach Ihr Android Studio V3.2 oder neuere . und entfernen Sie alle unnötigen Konfigurationen.
Aktivieren Sie also einfach dataBinding auf App-Ebene
build.gradle
.Es wird alles automatisch für Sie erledigen.
Sie können sicher unter den Zeilen entfernen-
Entfernen Sie database.compiler
Entfernen
kapt
Meine komplette Konfiguration
build.gradle (Projekt)
Verwenden Sie die neueste Version von gradle . Verwenden Sie die neueste Version von kotlin .
build.gradle (App)
Wichtig Kopieren Sie nicht nur die Konfiguration und fügen Sie sie ein. In dieser Antwort finden Sie Informationen zum Einrichten der Kotlin-Version.
gradle-wrapper.properties
quelle
In meinem Fall war der Fehler
Unresolved reference: RegisterationUserBinding
habe ich nur mein Layout Namenfragment_registeration_user
wie dieseFragmentRegisterationUserBinding
und machte es in der Databinding - Layout und der Fehler ging weg.quelle
Füge folgendes hinzu
app build.gradle
Dies wird den Trick machen.
$android_plugin_version
ist die Version voncom.android.tools.build:gradle
inapplication build.gradle
Fügen Sie dies auch Ihrem Modul hinzu
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
quelle
Fügen Sie die Datenbindung in Android Project hinzu, wenn Sie die Kotlin-Sprache verwendet haben.
Unten Schritte
- Zuerst müssen Sie das folgende Plugin hinzufügen
- Zweite Datenbindung aktiviert true
All dieser Punkt wurde in app.build.gradle hinzugefügt, nachdem auf "SYNC NOW" geklickt wurde.
Lets Zum Beispiel haben Sie Profilaktivität bearbeiten, wie man dann Bindungsvariable in Kotlin definiert?
Get Binding ist hier eine Methode, um zu behandeln, welche Art von Bindungsobjekt
quelle
In meinem Fall hinzufügen
Das Problem wurde für mich gelöst. Ich habe es das erste Mal ignoriert und dachte, es sei für das Problem irrelevant:
Aber jetzt funktioniert die Datenbindung einwandfrei.
quelle
Ich möchte meine eigene Erfahrung teilen. Die Verwendung der Datendatenbindung mit Kotlin in Android Studio reicht aus, um sie hinzuzufügen
Danach "synchronisieren" und, es ist sehr wichtig, "Projekt machen". Danach ist Ihr gesamtes Objekt aktiv.
quelle
Bevor Sie versuchen, FragmentDetailsBinding zu verwenden, müssen Sie sicherstellen, dass Sie das entsprechende Layout (fragment_details.xml) in ein Datenbindungslayout konvertiert haben, indem Sie das gesamte Layout in das übergeordnete Tag "" einschließen und alle XML-Dateien in das Layout-Tag verschieben, dann das Projekt erstellen und fertig
quelle
Verlassen Sie einfach alle Datenbindungsabhängigkeiten und verwenden Sie diese stattdessen
quelle