[android] Expression de liaison de données non compilée



Answers

Le problème a persisté malgré l'ajout de <import type="android.view.View" /> à ma balise de données. Finalement, l'erreur a été causée par une incompatibilité entre le nom de la variable et l'objet de ma classe POJO.

C'était mon tag de données:

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

et j'utilisais:

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

au lieu de:

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

J'ai oublié de le changer après avoir copié le code de la documentation. Attention aux erreurs comme celles-ci qui sont difficiles à détecter pour les débutants à DataBinding

Question

J'essaie la nouvelle bibliothèque de liaison de données. J'ai un problème étrange où la propriété binding n'est pas compilée.

Ceci est une version simplifiée du fichier 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>

Je reçois le message suivant lors de la compilation:

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

java.lang.RuntimeException: erreurs de liaison de données trouvées. **** / erreur de liaison de données **** msg: les identificateurs doivent avoir des types définis par l'utilisateur à partir du fichier XML. Il manque la vue

Tout compile (et fonctionne!) Quand je retire l' android:visiblity déclaration de android:visiblity .

Je ne vois pas ce qui me manque ici




Links