web-dev-qa-db-ja.com

データバインディング式がコンパイルされていません

新しいデータバインディングライブラリを試しています。 visibilityプロパティのバインドがコンパイルされないという奇妙な問題があります。

これは、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>

コンパイル時に次のメッセージが表示されます。

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

Java.lang.RuntimeException:データバインディングエラーが見つかりました。 **** /データバインディングエラー**** msg:識別子には、XMLファイルのユーザー定義型が必要です。ビューが欠落しています

Android:visiblity宣言を削除すると、すべてがコンパイルされます(動作します!)。

私はここに何が欠けているのかわかりません

63
Jordy Langen

データタグ内に、以下も追加する必要があります。

<import type="Android.view.View" />
167
bwhite

データタグに<import type="Android.view.View" />を追加しても問題は解決しませんでした。最終的に、エラーはPOJOクラスの変数名とオブジェクトの不一致が原因であることがわかりました。

これは私のデータタグでした:

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

そして私は使用していました:

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

の代わりに:

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

ドキュメントからコードをコピーした後、変更するのを忘れていました。 DataBindingの初心者にとって検出が難しいこのような間違いに注意してください

31

POJOオブジェクトがライブラリプロジェクトにあったという事実によって引き起こされたまったく同じエラーに直面しました。

ライブラリのbuild.gradleを更新して、データバインディングとメインプロジェクトを有効にします。

dataBinding {
    enabled = true
}
7
Benoit