Ошибка привязки данных: допускается только один элемент макета и один элемент данных.
Я получаю следующую ошибку при использовании привязки данных и включает тег внутри:
Error:Execution failed for task ':app:dataBindingProcessLayoutsBetaDebug'.>data binding error msg:Only one layout element and one data element are allowed. [path to file] has 3file:[path to file]****\ data binding error ****
Это мой файл макета:
[...]
<LinearLayout
android:id="@+id/activity_description_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical">
<include
android:id="@+id/activity_description_header_bottom"
layout="@layout/activity_description_header_bottom" />
<include
android:id="@+id/activity_description_contact_info"
layout="@layout/activity_description_contact_info" />
<include
android:id="@+id/activity_description_other_info_box"
layout="@layout/activity_description_other_info_box" />
<include
android:id="@+id/activity_description_bottom_buttons"
layout="@layout/activity_description_bottom_buttons" />
</LinearLayout>
[...]
</layout>
И в каждом из включенных макетов у меня есть что-то вроде этого:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
[...]
</layout>
От этого ответа: привязка данных Android с использованием тега include. Предположим, что мой код верен, почему databinder думает, что я использую больше одного тега в файле?
Ответы
Ответ 1
Я решил свою проблему. Эта ошибка появляется, если в теге макета содержится более одного элемента:
Неправильно:
<layout>
<data>
...
</data>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
</layout>
Правильно:
<layout>
<data>
...
</data>
<LinearLayout>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
</LinearLayout>
</layout>
Ответ 2
В <layout> , должен иметь один <data> и один layoutView (относительный/линейный и т.д.)....
Множественные макеты не допускаются, в layoutViews может быть несколько layoutViews, но при кратности верхнего слоя не допускаются....
Ответ 3
Также эта ошибка возникает, когда вы используете DataBinding и используете тег без тега
правильно
<layout>
<data>
<variable>
</variable>
</data>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
Другими словами, вы должны кэшировать структуру DataBinding в xml