Android Liaison de Données: comment passer des variables à inclure la mise en page
Google documentation dit que les variables peuvent être passés dans une mise en liaison du contenant de la mise en page, mais je ne peux pas le faire fonctionner, mais obtenir la liaison de données d'erreur ****msg:les Identificateurs doivent avoir des types définis par l'utilisateur à partir du fichier XML. gestionnaire est absente.
L', y compris XML ressemble à ceci:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<import type="com.example.FocusChangeHandler"/>
<variable
name="handler"
type="FocusChangeHandler"/>
</data>
<!-- Some other views --->
<include
android:id="@+id/inputs"
layout="@layout/input_fields"
bind:handler="@{handler}"/>
</layout>
Et le XML comme ceci:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
android:id="@+id/nameEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onFocusChange="@{handler.onFocusChange}"/>
</layout>
Je suis en mesure de reporter le point de Vue de inclus la mise en page générée de liaison de la classe, mais en passant une variable ne fonctionne tout simplement pas.
Vous devez vous connecter pour publier un commentaire.
La la documentation spécifie
Je suppose que vous devez avoir dans votre mise en page inclus:
<variable name="onClick" type="android.view.View.OnClickListener"/> <variable name="buttonText" type="String"/>
mais cela ne semble pas fonctionner.Exemple
Comme je veux passer
String
de inclus de mise en page. Je vais créer une variable de typeString
. Reportez-vous qu'String
à votreTextView
. J'ai créépassedText
par exemple.Maintenant ajouter
passedText
champ à votre<include
tag.Il est à noter que des mises en page (parent & inclus) doit être
binding layout
, enveloppé avec<layout
DataBindingUtil.setContentView<FragmentOfferDetailBinding>(this, R.layout.fragment_offer_detail)
, MÊME si vous n'êtes pas à l'aide de l'un de ses éléments.DataBindingUtil
pour des Fragments & boîtes de dialogue.Pour la chaîne codée en dur: