Android DataBinding在类L *** / **** / common / BR

时间:2019-02-22 19:15:43

标签: android android-databinding

我有一个项目正在尝试在将包含的不同应用程序之间共享通用代码。

现在,我只有一个通用模块作为android库,在其中移动了一个片段及其所有链接资源,因此可以在我的主应用程序模块上使用它。

我能够正确显示布局,但是当我尝试将变量绑定到该布局时,出现以下错误: java.lang.NoSuchFieldError: No field device of type I in class L***/****/common/BR; or its superclasses (declaration of '**.****.common.BR' appears in /data/app/***.****.******-9VGDieZHqLKJUD0xhdmawA==/split_lib_slice_6_apk.apk)

在堆栈跟踪中,此方法会在我的片段生成的数据绑定类上发生问题:

public void setDevice(@Nullable **.***.common.vo.Device Device) {
    this.mDevice = Device;
    synchronized(this) {
        mDirtyFlags |= 0x1L;
    }
    notifyPropertyChanged(BR.device);
    super.requestRebind();
}

具体在此次通话中:notifyPropertyChanged(BR.device)

因此,显然,生成的类无法在合并的BR文件中找到BR.device,但它仍然存在,它是在拆分的APK中找到的...

我不知道这是配置问题还是合并过程中的错误...

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

检查两个模块的软件包名称是否相同。 我有类似的错误,这是由于我的lib模块具有 与我的应用模块相同的软件包名称。

示例:

com.app.example(应用程序模块包名称) com.app.example(lib模块软件包名称)

我改为:

com.app.example(应用程序模块包名称) com.lib.example(lib模块软件包名称)