J'ai la classe de fragment suivante écrite en Java à l'aide de la nouvelle bibliothèque de liaison de données
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();
}
}
Il compile et fonctionne bien.
J'ai essayé de le réécrire dans Kotlin et j'ai trouvé ce qui suit:
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()
}
}
Mais maintenant, l'étape :app:compileDebugKotlin
produit ce qui suit:
Erreur: (16, 38) Référence non résolue
: erreur de liaison de données : (37, 27) Référence non résolue: FragmentDataBinding
Comment puis-je utiliser la bibliothèque de liaison de données Android avec Kotlin?
Mon niveau supérieur 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()
}
}
My build.gradle
in app dir (uniquement les parties pertinentes):
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'
}
}
J'utilise Android Studio 1.4, Build tools version 23.0.1, Android SDK 23, SDK tools 24.4.0
java
android
kotlin
android-databinding
Mikhail
la source
la source
apply plugin: 'kotlin-kapt'
dans le fichier de gradle d'application dans la version la plus récente.Réponses:
Essayez d'utiliser cette configuration:
Dans main build.gradle :
Build de l' application . :
la source
2.2.0-alphaX
est disponible, et pour info, la version de la liaison de données est la même que celle d'Android-gradle-plugin lui-même. afin que vous puissiez externaliser cette version et l'utiliser comme version du compilateur.apply plugin: 'kotlin-kapt'
aussi. Voir stackoverflow.com/a/42974558/1916449J'ai trouvé une nouvelle solution, j'espère qu'elle vous aidera.
Tout d'abord, vérifiez si le plugin est appliqué:
puis
Vous pourriez avoir une erreur dans la dépendance:
UTILISATION
au lieu de
Vous pouvez visiter ici pour la nouvelle version
Je vous remercie.
la source
Mise à jour 2: C'est une réponse très ancienne, référez-vous plutôt à la réponse de lrampazzo.
Cela fonctionne avec 1.0-rc4, mettez
dans vos dépendances
Merci Ghedeon, pour le lien dans les commentaires
Mise à jour : Voici un exemple de projet Hello World très simple
la source
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. Avez-vous les mêmes erreurs? Et quelle est votre version de studio Android?La version du compilateur de liaison de données est la même que la version gradle dans votre fichier build.gradle de projet:
et la version gradle est
Voici un exemple de lien pour terminer l'utilisation de la bibliothèque de liaison de données dans kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
la source
dataBinding.enabled = true
était ce que j'oubliaisPour résoudre le problème, vous devez mettre
en haut de build.gradle (Module: app), puis mettez cette ligne dans les dépendances
Vous pouvez trouver la version du plugin Android en allant dans le menu
Puis synchronisez à nouveau. Si vous voyez cet avertissement, ignorez-le.
la source
Essayez ceci.Andrid studio 2.0 (2.1)
Dans build.gradle
Dans mon projet:
buildToolsVersion = "23.0.3"
dans build.gradle de niveau supérieur
la source
ce travail pour moi dans androidStudio ver3.1.3
la source
Liaison des données de configuration dans kotlin
build.gradle (application de dossier)
Profitez de Kotlin ...
la source
Mise à jour importante
Vous pouvez voir dans la documentation d'Android.
Il suffit donc de mettre à jour votre Android Studio vers la V3.2 ou une version plus récente . et supprimez toutes les configurations inutiles.
Donc, activez simplement dataBinding au niveau de l'application
build.gradle
.Il fera tout pour vous automatiquement.
Vous pouvez ENLEVER EN TOUTE SÉCURITÉ sous les lignes-
Supprimer databinding.compiler
Retirer
kapt
Ma configuration complète
build.gradle (Projet)
Utilisez la dernière version de gradle . Utiliser la dernière version de Kotlin .
build.gradle (application)
Important Ne copiez et collez pas simplement la configuration. Voir cette réponse pour configurer la version Kotlin.
gradle-wrapper.properties
la source
Dans mon cas, l'erreur était que
Unresolved reference: RegisterationUserBinding
je viens d'utiliser mon nom de mise en pagefragment_registeration_user
comme celui-ciFragmentRegisterationUserBinding
et que je l'ai fait dans la mise en page de liaison de données et l'erreur a disparu.la source
Ajoutez le suivi en vous
app build.gradle
Ça fera l'affaire.
$android_plugin_version
est la version decom.android.tools.build:gradle
dansapplication build.gradle
Ajoutez également ceci à votre module
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
la source
Ajoutez Databinding dans Android Project en utilisant lorsque vous avez utilisé le langage kotlin.
Sous les étapes
- Vous devez d'abord ajouter le plugin ci-dessous
--Second dataBinding enabled true
Tout ce point ajouté dans app.build.gradle après avoir frappé "SYNC NOW"
Par exemple, vous avez modifier l'activité du profil, puis comment définir la variable de liaison dans kotlin ??
Ici, get binding est une méthode pour gérer le type d'objet de liaison
la source
Dans mon cas, ajouter
Résolu le problème pour moi. Je l'ai ignoré la première fois, j'ai pensé que cela n'avait rien à voir avec le problème:
Mais maintenant, la liaison de données fonctionne très bien.
la source
Je veux partager ma propre expérience. Pour utiliser la liaison de données avec Kotlin dans Android Studio, il suffit d'ajouter
Après cela, «synchronisez-le» et, c'est très important, de «créer un projet». Après cela, tout votre objet sera actif à utiliser.
la source
Avant d'essayer d'utiliser FragmentDetailsBinding, vous devez vous assurer que vous avez converti la mise en page correspondante (fragment_details.xml) en mise en page de liaison de données en enveloppant toute la mise en page dans la balise "" tag parent et en déplaçant tous les xmlns vers la balise de mise en page, puis créez le projet et c'est tout
la source
Sortez simplement de toutes les dépendances de liaison de données et utilisez ceci à la place
la source