在子模块中的Android数据绑定

我有一个应用程序模块,让我们说“测试”。 “测试”模块依赖于子模块B.两者都启用数据绑定。 在库模块B中,我使用数据绑定创建一个简单的活动,其目的是为了重用,例如:我可以创建一个基本的登录屏幕,并在以后的许多应用程序中使用它。 以下是包装B中的示例代码。

package com.test.packageb open class MainActivity : AppCompatActivity() { lateinit var binding : ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) } } 

然后在“测试”模块中,我可以简单地继承MainActivity类来定制事情,如下所示:

 class MainActivity1 : MainActivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } fun doSomething(){ binding.rootLayout.setBackgroundResource(R.color.colorPrimary) } } 

但是,当我尝试运行“测试”应用程序时,我得到了这个错误

错误:(17,9)无法访问类“com.test.packageb.databinding.ActivityMainBinding”。 检查您的模块类路径是否存在缺失或冲突的依赖关系
错误:(17,17)未解决的引用:rootLayout

我错过了什么? 还有什么需要实施吗?

测试应用程序build.gradle

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { applicationId "com.test.testapplication" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } dataBinding{ enabled true } buildTypes { debug { } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { kapt 'com.android.databinding:compiler:3.0.0-beta4' implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.0.2' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', { exclude group: 'com.android.support', module: 'support-annotations' }) implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" implementation project(':packageb') } 

包B build.gradle

 apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } dataBinding{ enabled true } buildTypes { debug { minifyEnabled false } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { kapt 'com.android.databinding:compiler:3.0.0-beta4' implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.0.2' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', { exclude group: 'com.android.support', module: 'support-annotations' }) implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" }