数据绑定(bind)设置:
apply plugin: 'kotlin-kapt'
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:3.1.0"
}
使用数据绑定(bind)的 fragment 类:
class LandingFragment : Fragment(), Injectable {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val dataBinding = LandingFragmentBinding.inflate(inflater, container, false)
return dataBinding.root
}
}
每次为此 fragment 运行Espresso测试时,都会收到以下异常:
java.lang.NoClassDefFoundError: android.databinding.DataBinderMapperImpl
at android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.java:32)
at com.sc.databinding.LandingFragmentBinding.inflate(LandingFragmentBinding.java:42)
at com.sc.ui.landing.LandingFragment.onCreateView(LandingFragment.kt:32)
...
最佳答案
有点晚了,但是我通过添加带有kapt作为测试依赖项的DataBinding编译器解决了这个问题:
kaptAndroidTest 'androidx.databinding:databinding-compiler:3.3.2'
或者,如果您的项目尚未使用Jetpack,则不是AndroidX的版本。