数据绑定Kotlin Android工作室错误

我正在尝试在我的项目中使用数据绑定库,这是写在Kotlin。 我正在使用Kotlin v.1.0.2&Gradle插件v。2.12和绑定编译器。 我的build.gradle配置如下:

android { dataBinding { enabled = true } } kapt { generateStubs = true } dependencies { kapt "com.google.dagger:dagger-compiler:2.2" provided "org.glassfish:javax.annotation:10.0-b28" kapt "com.android.databinding:compiler:2.12" } 

在我的Fragment布局中,我用一些变量声明了<data>块:

 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.view.View"/> <import type="com.xxx.ui.AuthorizationPresenter"/> <import type="com.xxx.entity.AuthProvider"/> <variable name="model" type="com.xxx.ui.authorization.Model"/> <variable name="presenter" type="com.xxx.ui.authorization.AuthorizationPresenter"/> </data> <FrameLayout ... /> </layout> 

然后在我的AuthorizationFragment.kt类中设置这些变量:

 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { binding = FragmentAuthorizationBinding.inflate(inflater) binding?.presenter = presenter binding?.model = Model() binding?.addOnRebindCallback(object : OnRebindCallback<FragmentAuthorizationBinding>() { override fun onPreBind(binding: FragmentAuthorizationBinding?): Boolean { val sceneRoot = binding?.root as ViewGroup TransitionManager.beginDelayedTransition(sceneRoot) return true } }) return binding?.root } 

而问题是,虽然这个代码成功地编译和构建APK,Android工作室标记这些线

 binding?.presenter = presenter binding?.model = Model() 

作为无效,并显示以下错误: Cannot access class 'com.xxx.ui.authorization.AuthorizationPresenter'. Check your module classpath for missing or conflicting dependencies Cannot access class 'com.xxx.ui.authorization.AuthorizationPresenter'. Check your module classpath for missing or conflicting dependencies 。 我试图添加kapt 'com.google.guava:guava:19.0'到我的build.gradle ,但没有任何改变。 另外值得一提的是,只有当我在Kotlin中编写我的片段时,才会出现这个问题,当它用Java编写时,一切都可以。

直到IDE显示错误,你可以使用这个:

 binding.setVariable(BR.model, Model()) 

它不像kotlin形式那么简洁,但红色不会再让你发狂了)