新しいデータバインディングライブラリを試しています。 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
宣言を削除すると、すべてがコンパイルされます(動作します!)。
私はここに何が欠けているのかわかりません
データタグ内に、以下も追加する必要があります。
<import type="Android.view.View" />
データタグに<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の初心者にとって検出が難しいこのような間違いに注意してください
POJOオブジェクトがライブラリプロジェクトにあったという事実によって引き起こされたまったく同じエラーに直面しました。
ライブラリのbuild.gradleを更新して、データバインディングとメインプロジェクトを有効にします。
dataBinding {
enabled = true
}