Reputation: 1937
I'm getting following error when using databinding and include tag inside:
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 ****
This is my layout file:
[...]
<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>
And in each of the included layouts i have something like this:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
[...]
</layout>
From this reply: Android Data Binding using include tag i suppose that my code is correct, why databinder thinks that I use more than single tag in the file?
Upvotes: 39
Views: 19280
Reputation: 22867
android {
//...
buildFeatures{
viewBinding = true
}
}
Do not use android:layout_width
or android:layout_height
as attributes of the <layout/>
tag because otherwise dataBinding already counts it as a view and then in the scope of layot we could not put another view.
<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
Upvotes: 2
Reputation: 2305
layout tag doesn't allow more than one child, Please put your all xml code inside any parent layout like relative/ linear layout
Example
<layout>
<LinearLayout>
................
...............
</LinearLayout>
</layout>
Upvotes: 2
Reputation: 954
Also this error hapens when you are using DataBinding and using tag without tag
correct
<layout>
<data>
<variable>
</variable>
</data>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
in other words you have to keap DataBinding structure in xml
Upvotes: 1
Reputation: 187
In < layout>, must have one < data> and one layoutView(Relative/Linear etc).... Multiple layoutViews are not allowed,In layoutViews may have multiple layoutViews but on top layer multiplicity are not allowed....
Upvotes: 4
Reputation: 1937
I solved my issue. This error appears when there is more than single element in the layout tag:
Wrong:
<layout>
<data>
...
</data>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
</layout>
Correct:
<layout>
<data>
...
</data>
<LinearLayout>
<LinearLayout>
...
</LinearLayout>
<LinearLayout>
...
</LinearLayout>
</LinearLayout>
</layout>
Upvotes: 99