Kotlin-android:未解决的引用数据绑定
我有以下使用新的数据绑定库Java编写的片段类
import com.example.app.databinding.FragmentDataBdinding; public class DataFragment extends Fragment { @Nullable private FragmentDataBinding mBinding; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false); return mBinding.getRoot(); } }
它编译和运行良好。
我试图在Kotlin中重写它,并提出如下:
import com.example.app.databinding.FragmentDataBdinding class ProfileFragment : Fragment() { private var mBinding: FragmentDataBinding? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false) return mBinding!!.getRoot() } }
但现在步骤:app:compileDebugKotlin
输出以下内容:
错误:(16,38)未解决的引用:数据绑定
错误:(37,27)未解决的引用:FragmentDataBinding
如何使用Kotlin使用android-databinding库?
我的顶级build.gradle
:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.android.databinding:dataBinder:1.0-rc4' } } allprojects { repositories { jcenter() } }
我的build.gradle
在应用程序目录(只有相关的部分):
apply plugin: 'com.android.application' apply plugin: 'com.android.databinding' apply plugin: 'kotlin-android' dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } buildscript { ext.kotlin_version = '0.14.451' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } } repositories { mavenCentral() maven { url 'http://oss.sonatype.org/content/repositories/snapshots' } }
我正在使用Android Studio 1.4,Build工具版本23.0.1,Android SDK 23,SDK工具24.4.0
尝试使用这个configuration:
在主build.gradle :
buildscript { ext.kotlin_version = '<kotlin-version>' ext.android_plugin_version = '2.2.0-alpha4' dependencies { classpath "com.android.tools.build:gradle:$android_plugin_version" //... rest of the content } }
应用程序build.gradle :
android { dataBinding { enabled = true } } dependencies { kapt "com.android.databinding:compiler:$android_plugin_version" } kapt { generateStubs = true }
我find了新的解决scheme,希望它能帮助你。
首先检查插件是否适用:
apply plugin: 'kotlin-kapt'
然后
android { ... ... dataBinding { enabled = true } ... ... }
您可能在依赖项中有一个错误:
使用
kapt 'com.android.databinding:compiler:3.0.0-alpha5'
代替
compile 'com.android.databinding:compiler:3.0.0-alpha5'
谢谢。
更新2:这是一个非常古老的答案,而是参考lrampazzo的答案。
它适用于1.0-RC4,放
kapt 'com.android.databinding:compiler:1.0-rc4'
进入你的依赖关系
感谢Ghedeon,在评论中的链接
更新 : 这是一个非常简单的Hello World示例项目
数据绑定编译器的版本与您的项目build.gradle文件中的gradle版本相同:
// at the top of file apply plugin: 'kotlin-kapt' android { dataBinding.enabled = true } dependencies { kapt "com.android.databinding:compiler:3.0.0-beta1" }
和gradle版本是
classpath 'com.android.tools.build:gradle:3.0.0-beta1'
这里是一个示例链接,完成kotlin数据绑定库的使用。
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
试试这个.Andrid studio 2.0(2.1)
在build.gradle
android{ dataBinding { enabled = true } ... } dependencies { kapt 'com.android.databinding:compiler:2.0.0-rc1' .... } kapt { generateStubs = true }
在我的项目中: buildToolsVersion = "23.0.3"
在顶级build.gradle
dependencies { classpath 'com.android.tools.build:gradle:2.0.0' }
- 检测应用程序是否安装?
- Facebook SDK 4.10上的NPE:尝试调用空对象引用上的接口方法java.lang.Object com.facebook.inject.Lazy.get()
- layout_weight在滚动视图中不起作用
- Android中的Bitmap和Drawable有什么区别?
- 如何将附加date生成到gradle上的versionNameSuffix
- 如何使用onSaveInstanceState()和onRestoreInstanceState()?
- 从Parcelable类读取和写入java.util.Date
- 渐进式Web应用程序与本机应用程序相比具有哪些function,反之亦然,Android上
- Google Play服务库更新并丢失符号@ integer / google_play_services_version