2016-02-09 10 views
7

Googleドキュメントでは、変数が含まれているレイアウトから含まれているレイアウトのバインディングに渡される可能性がありますが、識別子にはXMLファイルのユーザー定義型が必要です。ハンドラはそれを見逃しています。Androidデータバインディング:レイアウトを含めるために変数を渡す方法

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

そして、このような付属のXML:: を含むXMLは次のようになります

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

私は、生成されたバインディング・クラスを通じて含まれるレイアウトからビューを参照することができるよしかし、変数を渡すと、ちょうどdoesnの仕事はありません。

答えて

3

documentationはここ

を指定し、

name.xmlと contact.xmlレイアウトファイルの両方でユーザー変数が存在しなければならない、私はあなたが含まれるレイアウトでこれを持っていなければならないと仮定:

<data> 
      <variable name="handler" 
        type="FocusChangeHandler"/> 
    </data> 
+0

面白いですが面白いですが面白いですが面白いですが面白いですが、私がこれを試していて、変数が複数回定義されているというエラーが発生しました。 Android Studio 2.0 Beta 3とBeta 5の間で何かが変更されているはずです。 – pmellaaho

+0

複数の変数を渡すことはできますか?私は試しました: ' 働く – clu

関連する問題