Android数据绑定在不同的模块中使用

时间:2016-09-29 01:44:43

标签: android layout data-binding module include

现在我有三个模块,模块A,B,C.module一个编译模块B,模块B编译模块C.模块C中有一个布局(layout_c.xml)。然后我在模块A中使用layout_c.xml布局(layout_a.xml)。

  1. 有layout_c.xml `

        

    </variable>
    
    <variable
        name="handler"
        type="xxxxxx">
    
    </variable>
    

    <RelativeLayout
        ......
    </RelativeLayout>
    

    `

  2. 有layout_a.xml

    <include android:id="@+id/layout_c" layout="@layout/layout_c"/>

  3. 问题:IDE认为bindingA.layoutC返回的视图不是数据绑定。模块C有BR类和所有数据绑定类。但模块A没有。所以,我该怎么办?

    LayoutABinding bindingA = DataBindingUtil.setContentView(this,R.layout.layout_a); newTitleBarViewModel.setDataBinding(bindingA.layoutC);

1 个答案:

答案 0 :(得分:0)

为了让数据绑定能够跨多个模块工作 - 在我的情况下 - 我必须确保每个Android Studio模块(库,手机/平板电脑等)在相应的$ set sum=`echo ${my_path} | grep -o '/' | wc -l` $ echo ${sum} 4 中启用了数据绑定(不仅仅是库.gradle文件,因为这还不够)

像这样:

build.gradle

应用解决方案的项目结构:

  1. 有一个图书馆模块,以及多个“app模块” (又称,可以运行的手机或平板电脑的Android Studio模块) 使用同一项目中该库的活动/布局

  2. 库项目的/ res / layout下的.xml依赖于数据绑定,如下所示:

    android {
            ...
    
        defaultConfig {
            ...
        }
        buildTypes {
            ...
        }
    
        // Looks like this needs to be set in the app module that uses the lib
        // The lib needs it for the layout binding code there
        dataBinding {
            enabled = true
        }
    
    }
    
  3.   

    解决这个问题有点棘手。特别是在我有多个模块的情况下。在我为我正在使用的主模块应用此解决方案后,我仍然继续遇到构建错误。最后,我注意到在所有错误输出中还有另外一个模块 - 我没有使用过它 - 也将库作为依赖项,但是在<TextView android:id="@+id/display_name_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="@={user.displayName}" android:textSize="20sp"/> 中缺少数据绑定启用。当最终确定并解决时,构建工作正常。 我很高兴找到这个,因为当你可以在多个模块中重复使用数据绑定的布局时,它会让事情变得更好