现在我有三个模块,模块A,B,C.module一个编译模块B,模块B编译模块C.模块C中有一个布局(layout_c.xml)。然后我在模块A中使用layout_c.xml布局(layout_a.xml)。
有layout_c.xml `
</variable>
<variable
name="handler"
type="xxxxxx">
</variable>
<RelativeLayout
......
</RelativeLayout>
`
有layout_a.xml
<include
android:id="@+id/layout_c"
layout="@layout/layout_c"/>
问题:IDE认为bindingA.layoutC返回的视图不是数据绑定。模块C有BR类和所有数据绑定类。但模块A没有。所以,我该怎么办?
LayoutABinding bindingA = DataBindingUtil.setContentView(this,R.layout.layout_a);
newTitleBarViewModel.setDataBinding(bindingA.layoutC);
答案 0 :(得分:0)
为了让数据绑定能够跨多个模块工作 - 在我的情况下 - 我必须确保每个Android Studio模块(库,手机/平板电脑等)在相应的$ set sum=`echo ${my_path} | grep -o '/' | wc -l`
$ echo ${sum}
4
中启用了数据绑定(不仅仅是库.gradle文件,因为这还不够),
build.gradle
应用解决方案的项目结构:
有一个图书馆模块,以及多个“app模块” (又称,可以运行的手机或平板电脑的Android Studio模块) 使用同一项目中该库的活动/布局
库项目的/ 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
}
}
解决这个问题有点棘手。特别是在我有多个模块的情况下。在我为我正在使用的主模块应用此解决方案后,我仍然继续遇到构建错误。最后,我注意到在所有错误输出中还有另外一个模块 - 我没有使用过它 - 也将库作为依赖项,但是在
<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"/>
中缺少数据绑定启用。当最终确定并解决时,构建工作正常。 我很高兴找到这个,因为当你可以在多个模块中重复使用数据绑定的布局时,它会让事情变得更好