2017-09-27 12 views
1

私は自分のプロジェクトに複数のモジュールを持っています。モジュールアプリとモジュールAのライブラリとして機能するモジュールAを考えてみましょう。私は、データバインディングを使用し、各モジュールのbuild.gradleにAndroidデータバインディングには別のモジュールのレイアウトが含まれています

dataBinding { enabled = true }

を追加することにより、正常に動作します。

タグを使用してモジュールAからレイアウトを含めるときに問題が発生しました。私が含まれるレイアウトのデータバインディングにアクセスしようとしているとき、それは代わりにViewDataBinding

Android studio autocomplete

のViewオブジェクトを返す私が含まれるレイアウト内のIDへのアクセスを継続しようとしているときただし、コンパイルが正常に動作しますIDEでもエラーが表示されます。私は、プロジェクトを再構築しようとしました、キャッシュを無効にし、他のすべて。

Error on android studio

そして、私はすでに、データバインディングを実装する方法をルールに従って確信しています。

<layout xmlns:android="http://schemas.android.com/apk/res/android> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/light_gray" 
     android:orientation="vertical"> 

     <include layout="@layout/included_layout" id="@+id/contact"/> 
    </LinearLayout> 
</layout> 

とモジュールA上のレイアウト:

<layout xmlns:android="http://schemas.android.com/apk/res/android> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/tv_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 
    </LinearLayout> 
</layout> 
+0

エラーIDEには何が表示されますか? –

+0

シンボルを解決できません。基本的にシンボルが見つかりません。https://i.stack.imgur.com/afIQX.png – luthfihariz

答えて

0

は非常によくビルド順序の問題である可能性がありこれは、モジュールのアプリ上のレイアウトです。親モジュールがそのコンテンツにアクセスしようとする前に、モジュールAが構築されていることを確認する必要があります。

あなたの連絡先に表示されているのは、連絡先に割り当てられたIDです。これは、あなたがアクセスしようとしているレイアウトが見つかったので良いです。次に、連絡先のバインディングファイルが検索されます。あなたの命名規則に基づいてIncludedLayoutBindingのようなものでなければなりません。そのファイルはtv_textとしてネストされたtextViewsを内部に持っています。

tv_textが表示されない場合は、IncludedLayoutBindingが子モジュール用に作成されていないためです。

子モジュールがデータバインディングを正しく有効にしていて、その値にアクセスしようとする前に子モジュールが構築されていることを確認してください。

childModule/build/source/dataBindingフォルダを確認して、layoutBindingクラスが作成されていることを確認できます。私はそれが現在ないと推測しています。

関連する問題