2015-08-18 14 views
27

Sto provando la nuova libreria di associazione dati. Ho un problema strano in cui il binding della proprietà visibility non è in fase di compilazione.Espressione di associazione dati non compilata

Questa è una versione semplificata del file xml:

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 

    <data> 

    <variable 
     name="header" 
     type="com.example.EmailHeader" /> 
    </data> 

    <RelativeLayout ... > 

     <TextView 
      ... 
      android:text="@{header.senderName ?? header.senderAddress}" 
      android:visibility="@{header.hasAttachment ? View.VISIBLE : View.INVISIBLE}" /> 

    </RelativeLayout> 
</layout> 

ottengo il messaggio di follow durante la compilazione:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 

java.lang.RuntimeException: dati trovati vincolante errori. ****/errore di associazione dati **** msg: gli identificatori devono avere tipi definiti dall'utente dal file XML. Visualizzazione mancante

Tutto compila (e funziona!) Quando rimuovo la dichiarazione android:visiblity.

non vedo che cosa mi manca qui

+0

Puoi condividere la tua classe EmailHeader? – Benoit

risposta

82

All'interno del tag di dati è necessario aggiungere anche:

<import type="android.view.View" /> 
+1

Non risolve l'errore –

+2

, l'errore indica chiaramente che "Visualizza" non ha una definizione. importando 'android.view.View' dovrebbe risolvere il problema e in caso contrario, si prega di condividere il nuovo errore e il codice di layout aggiornato. – yigit

+0

Ho avuto lo stesso problema e questo ha funzionato per me. IMHO, dovrebbe essere la risposta accettata. Grazie bwhite! – MidasLefko

5

Ho affrontato lo stesso errore esatto che è stato causato dal fatto che l'oggetto POJO era in un progetto di libreria.

Proprio upate la build.gradle della biblioteca per consentire l'associazione dati, così come nel progetto principale:

dataBinding { 
    enabled = true 
} 
16

problema persisteva nonostante l'aggiunta di <import type="android.view.View" /> ai miei dati tag.Finally trovato l'errore per essere causato da un mancata corrispondenza del nome della variabile e dell'oggetto della mia classe POJO.

Questa era la mia variabile di dati:

<data> 
     <import type="android.view.View" /> 
     <variable 
      name="employee" 
      type="com.example.Employee"/> 
    </data> 

e usavo:

<TextView 
     ... 
     android:text="@{user.lastName}" /> 

invece di:

<TextView 
     ... 
     android:text="@{employee.lastName}" /> 

dimenticato di cambiarlo dopo aver copiato il codice dalla documentazione. Cerca errori come questo che sono difficili da individuare per i neofiti di DataBinding

+1

Grazie amico !! – FindOutIslamNow