Подтвердить что ты не робот

Ошибка привязки данных: допускается только один элемент макета и один элемент данных.

Я получаю следующую ошибку при использовании привязки данных и включает тег внутри:

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 думает, что я использую больше одного тега в файле?

4b9b3361

Ответ 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