J'utilise Android Studio 2.0 Preview 4 . J'utilise des outils de SDK Android 25 rc1. Cette erreur persiste quel que soit le nombre de fois que je nettoie/reconstruis le projet. Fichier-> Invalider Les caches et les redémarrages ne fonctionnent pas non plus .. Je ne suis pas en mesure d'exécuter l'exemple le plus élémentaire de liaison de données.
fichier build.gradle
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.chiragshenoy.myapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.1.1'
compile 'com.Android.support:design:23.1.1'
}
MainActivity.Java
package com.example.chiragshenoy.myapplication;
import Android.databinding.DataBindingUtil;
import Android.os.Bundle;
import Android.support.v7.app.AppCompatActivity;
import Android.view.Menu;
import Android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivity binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
User user = new User("Test", "User");
binding.setUser(user);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:Android="http://schemas.Android.com/apk/res/Android">
<data>
<variable name="user" type="com.example.chiragshenoy.myapplication.User"/>
</data>
<LinearLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@{user.firstName}"/>
<TextView Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@{user.lastName}"/>
</LinearLayout>
</layout>
c'est mon fichier build.gradle de niveau supérieur
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.0.0-alpha3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Si votre version est correcte (1.5+), essayez ceci:
Cela pourrait résoudre le problème. Laissez nous savoir.
Cette solution a fonctionné pour moi "Fichier -> Invalidate Caches/Restart" https://stackoverflow.com/a/32191257/2205809
Tu devrais utiliser:
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
Dans onCreate
MainActivity n'est pas la classe Binding générée.
Je pensais juste en me basant sur Felipe GualbertoAnswer et j'ai obtenu une solution différente.
Si vous avez écrit plusieurs vues avec le même id dans différents XML, rendez-le unique.
Je vous remercie.
Par défaut, une classe Binding
sera générée en fonction du nom du fichier de présentation, convertie en casse Pascal et complétée par "Binding". Le fichier de présentation ci-dessus était main_activity.xml , de sorte que la classe de génération était MainActivityBinding . Le problème est que vous essayez de créer manuellement une classe de liaison.
Cette classe contient toutes les liaisons des propriétés de présentation (par exemple, la variable utilisateur) à la variable Views
de la présentation et sait comment affecter des valeurs aux expressions de liaison. Le moyen le plus simple de créer les liaisons est de le faire en gonflant . Il n'est pas nécessaire de redémarrer Android Studio.
Un des hack les plus rapides que j’utilise est de renommer le fichier xml.
par exemple.
renommez abc_layout.xml
en abc_layout2.xml
. une fois que l'importation de liaison indique une erreur, renommez-la en abc_layout.xml
.
le raccourci pour renommer est shift + F6
. son chemin plus rapidement que l'ensemble du projet reconstruit. cela ne supprimera cependant l'erreur que d'un seul fichier.
dans le fichier Build.Gradle de niveau supérieur, utilisez gradle 1.5.0 ou une version ultérieure
dependencies {
classpath 'com.Android.tools.build:gradle:1.5.0'
}
s'il est inférieur à 1.5.0, utilisez celui-ci également dans le fichier de niveau supérieur
classpath "com.Android.databinding:dataBinder:1.0-rc4"
Faire ceci
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
Au lieu de
MainActivity binding = DataBindingUtil.setContentView(this, R.layout.activity_main);