web-dev-qa-db-fra.com

Erreur de liaison de données: un seul élément de présentation et un seul élément de données sont autorisés.

Je reçois une erreur de suivi lorsque j'utilise databinding et 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 ****

Ceci est mon fichier de mise en page:

[...]

        <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>

Et dans chacune des mises en page incluses, j'ai quelque chose comme ceci:

<layout xmlns:Android="http://schemas.Android.com/apk/res/Android">
[...]
</layout>

De cette réponse: Liaison de données Android à l'aide de la balise include je suppose que mon code est correct, pourquoi databinder pense-t-il que j'utilise plus d'une balise dans le fichier?

20
RMK

J'ai résolu mon problème. Cette erreur apparaît lorsqu'il y a plus d'un élément dans la balise de présentation:

Faux:

<layout>
     <data>
          ...
     </data>
     <LinearLayout>
          ...
     </LinearLayout>
     <LinearLayout>
          ...
     </LinearLayout>
</layout>

Correct:

<layout>
     <data>
          ...
     </data>
     <LinearLayout>
         <LinearLayout>
              ...
         </LinearLayout>
         <LinearLayout>
              ...
         </LinearLayout>
     </LinearLayout>
</layout>
54
RMK

Dans <layout>, il faut avoir une <data> et un layoutView (Relatif/Linéaire, etc.) .... Plusieurs layoutViews ne sont pas autorisés. Dans layoutViews peut avoir plusieurs layoutViews mais la multiplicité des couches supérieures n'est pas autorisée ... . 

4
MANI

Cette erreur se produit également lorsque vous utilisez DataBinding et que vous utilisez tag sans tag. 

correct

<layout>
 <data>
      <variable>
      </variable>
 </data>
 <LinearLayout>
      ...
 </LinearLayout>
 <LinearLayout>
      ...
 </LinearLayout>

en d'autres termes, vous devez keap DataBinding structure en XML

in other words you have to keap DataBinding structure in xml

0
kazimad