vincular vinculacion valor traer relacionar otro otra misma libro hojas hoja filtro diferentes desde definicion datos como columnas celdas celda asignar android data-binding android-studio

android - valor - vinculacion de datos definicion



no se puede encontrar el símbolo BR en la vinculación de datos de Android (11)

Deseo utilizar Android Data Binding y configurarlo de acuerdo con el documento oficial.

el mensaje de error es: error: no se puede encontrar el símbolo import net.juude.droidviews.BR;

el archivo build.gradle nivel superior es:

buildscript { repositories { jcenter() } dependencies { classpath "com.android.tools.build:gradle:1.3.0-beta2" classpath ''me.tatarka:gradle-retrolambda:3.0.1'' classpath ''com.neenbedankt.gradle.plugins:android-apt:1.4'' classpath "com.android.databinding:dataBinder:1.0-rc0" } } allprojects { repositories { jcenter() mavenCentral() } }

y el archivo build.gradle en el módulo de la aplicación es

apply plugin: ''com.android.application'' apply plugin: ''me.tatarka.retrolambda'' apply plugin: ''com.neenbedankt.android-apt'' apply plugin: ''com.android.databinding'' android { compileSdkVersion 22 buildToolsVersion "22.0.1" lintOptions { abortOnError false } defaultConfig { applicationId "net.juude.droidviews" minSdkVersion 15 targetSdkVersion 22 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } } retrolambda { println("JAVA_HOME: " + System.getenv("JAVA_HOME")) println("JAVA7_HOME: " + System.getenv("JAVA7_HOME")) println("JAVA8_HOME: " + System.getenv("JAVA8_HOME")) javaVersion JavaVersion.VERSION_1_7 } } dependencies { compile project('':ptr-lib-debug'') compile project('':library'') compile ''com.android.support:support-v4:22.1.0'' compile ''com.mcxiaoke.volley:library:1.0.+'' compile files(''libs/droidmocks.jar'') compile ''com.android.support:support-annotations:22.1.1'' compile ''com.facebook.fresco:fresco:0.5.0'' compile ''com.android.support:recyclerview-v7:22.1.1'' compile ''io.reactivex:rxandroid:0.24.0'' compile ''io.reactivex:rxjava:1.0.6'' compile ''com.google.dagger:dagger:2.0'' apt ''com.google.dagger:dagger-compiler:2.0'' }

el archivo de diseño es

<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type=" net.juude.droidviews.databinding.User" /> </data> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/user_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.mName}"/> <TextView android:id="@+id/user_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.sex}"/> </LinearLayout> </layout>

el fragmento es

package net.juude.droidviews.databinding; import android.databinding.DataBindingUtil; import android.databinding.ViewDataBinding; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import net.juude.droidviews.BR; import net.juude.droidviews.R; /** * Created by juude on 15-6-9. */ public class DataBindingFragment extends Fragment{ @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewDataBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data_binding, container, false); //dataBinding.setVariable(BR.) User user = new User(); user.setSex("男"); user.setName("Juude"); dataBinding.setVariable(BR.user, user); return dataBinding.getRoot(); } }

como no obtuve el error de sintaxis en Android Studio, puedo suponer que Android Studio puede reconocer la clase BR;

Pero cuando compilo el proyecto, me dice que error:cannot find symbol class BR .

entonces quiero saber qué debo hacer para que genere el archivo correcto BR.java?


El solo hecho de reiniciar Android Studio, sin invalidar el caché, fue el truco para mí (estoy usando la versión 2.2.3).


En caso de que alguien todavía tenga este problema. Lo solucioné invalidando el caché en Android Studio. Y estoy usando Android Studio 2 con API 23

Archivo> Invalidar cachés / reiniciar


Encuentro la causa del problema en mi caso. Encuentro en las declaraciones de importación de mi clase de objeto de datos contiene:

import static android.databinding.tool.util.GenerationalClassUtil.ExtensionFilter.BR;

El problema se resuelve después de que eliminé eso. Android Studio de alguna manera resolvió la clase BR incorrectamente para mí.



La anotación Bindable genera una entrada en el archivo de clase BR durante la compilación. El archivo de clase BR se generará en el paquete del módulo.

@Bindable public String getFirstName() { return this.firstName; }


Me encontré con este problema también. El problema fue que cambié el nombre de la clase y no actualicé los valores en el archivo XML. Esto incluye los nombres de las variables y dónde se accede en el archivo xml.


Para mí, ayudó a ejecutar ./gradlew clean build en la carpeta del proyecto. Mostró un error que el estudio de Android no hizo.


Para mi caso, el problema fue causado por

"error: la variable MyVariable ya estaba definida en la clase MyModel"

Lo molesto fue que Android Studio gradle build no mostró este error en la parte inferior. Tuve que comentar cada error de enlace de datos> Reconstruir proyecto hasta que llegue el error. La lección aprendida fue analizar cada error de abajo hacia arriba y observar cualquier cosa que haya cambiado recientemente.


También recibí el mismo mensaje de error, pero mi causa raíz fue diferente de la que se compartió aquí.

En mi caso, el problema era que después de resolver un conflicto de combinación, había dejado por error una anotación @Override adicional en un método. Por lo tanto, el preprocesador de JVM falló y luego tampoco se generaron las clases de enlace de datos.

La parte irritante para mí fue que no pude ver ningún mensaje de error relacionado con esto, o fue difícil de detectar entre todos los demás errores del compilador. Y Android Studio tampoco muestra la anotación adicional como un error. Entonces, en caso de que alguien más tenga problemas con el mismo error, verifique que no tenga un error en alguna anotación que impida que el preprocesador APT se active.


si usa la versión de Android Studio2.3 y la configuración de su proyecto es la siguiente:

Gradle version: 3.3 Android plubin version:2.3.0 Compile sdk Version:23+ build tools Version:25+

solo tienes que hacer es agregar

dataBinding{enabled=true}

para build.gradle, que sincronizar el archivo gradle


Debe agregar esto a su archivo gradle.properties

android.databinding.enableV2=true

De developer.android.com

es posible que obtenga varios errores que informan que las clases de enlace no se encuentran. El nuevo compilador de enlace de datos evita estos errores al generar las clases de enlace antes de que el compilador gestionado cree su aplicación.