Ответ 1
Внутри тега данных вы также должны добавить:
<import type="android.view.View" />
Я тестирую новую библиотеку привязки данных. У меня есть странная проблема, когда привязка свойства 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
}