使用数据绑定和包含标记时,我遇到以下错误:
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 Data Binding using include tag我想我的代码是正确的,为什么数据仓认为我在文件中使用的不仅仅是单个标签?
答案 0 :(得分:57)
我解决了我的问题。当布局标记中包含多个元素时,会出现此错误:
错:
<layout>
<data>
...
</data>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
</layout>
正确:
<layout>
<data>
...
</data>
<LinearLayout>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
</LinearLayout>
</layout>
答案 1 :(得分:4)
In&lt;布局&gt;,必须有一个&lt;数据&GT;和一个layoutView(相对/线性等).... 不允许使用多个layoutView,在layoutViews中可能有多个layoutViews但在顶层上不允许多重... ....
答案 2 :(得分:1)
布局标签不允许有多个孩子,请把您的所有xml代码放在任何父布局(例如相对/线性布局)中
示例
<layout>
<LinearLayout>
................
...............
</LinearLayout>
</layout>
答案 3 :(得分:0)
当您使用DataBinding并使用不带标记的标记
时,此错误也会产生正确
<layout>
<data>
<variable>
</variable>
</data>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
换句话说,你必须在xml中使用数据绑定结构
答案 4 :(得分:0)
android {
//...
buildFeatures{
viewBinding = true
}
}
请勿将android:layout_width
或android:layout_height
用作<layout/>
标记的属性,因为否则dataBinding已经将其视为一个视图,那么在layot范围内,我们无法放置另一个视图。
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<View
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- ... -->
</View>
</layout>
GL