数据绑定设置:
apply plugin: 'kotlin-kapt'
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:3.1.0"
}
使用数据绑定的片段类:
class LandingFragment : Fragment(), Injectable {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val dataBinding = LandingFragmentBinding.inflate(inflater, container, false)
return dataBinding.root
}
}
每次为这个片段运行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)
...
6条答案
按热度按时间iovurdzv1#
虽然有点晚,但我通过添加DataBinding编译器和kapt作为测试依赖项解决了这个问题:
或者如果您的项目尚未使用Jetpack,则使用非AndroidX版本。
fnx2tebb2#
加
到所有模块的
build.gradle
文件上的dependencies
。slhcrj9b3#
我遇到了这个错误。我做了两件事:1.在gradle中添加了kaptAndroidTest“androidx.databinding:databinding-compiler:3.5.1”2.使用了数据绑定,也就是说,我创建了一个伪bool变量,并将其真实的注入到视图中。看起来您不能只使用数据绑定来检索视图,而不是发出可怕的findViewById。您必须在模块中至少使用一次它。一旦使用它,您就可以在模块中使用所有其他类。
iqjalb3h4#
我也有同样的问题,通过添加得到了解决
在build.gradle应用程序中(如果使用dataBinding,则为所有模块)
在build.gradle项目中
cs7cruho5#
将dataBinding = true添加到您的build.gradle文件中的android { },一切都会好起来,希望这对您有所帮助。
build.gradle:
y0u0uwnf6#
尝试按照this stackoverflow添加android-apt插件答案: