我使用新的数据绑定库用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数据绑定库?
我的顶级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、构建工具版本23.0.1、Android SDK 23、SDK工具24.4.0
发布于 2016-05-05 15:20:01
尝试使用此配置:
在main 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
}
}App build.gradle
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:$android_plugin_version"
}
kapt {
generateStubs = true
}发布于 2017-06-14 18:00:34
我找到了新的解决方案,希望能对你有所帮助。
首先检查是否应用了插件:
apply plugin: 'kotlin-kapt'然后
android {
...
...
dataBinding {
enabled = true
}
...
...
}您可能在依赖项中出现错误:
使用的
kapt 'com.android.databinding:compiler:3.1.4'而不是
compile 'com.android.databinding:compiler:3.1.4'您可以访问here获取新版本
谢谢。
并且在布局文件中使用布局标签之前使用它的绑定类,你可以很容易地做到这一点:在布局文件中你的根视图(例如- Constraint Layout) ALT+Enter ->转换为数据绑定类
发布于 2015-10-29 13:58:24
更新2:这是一个非常古老的答案,请参考lrampazzo的答案。
它适用于1.0-rc4,put
kapt 'com.android.databinding:compiler:1.0-rc4' 到您的依赖项中
感谢Ghedeon在评论中的链接
更新:Here's是一个非常简单的hello world示例项目
https://stackoverflow.com/questions/33165324
复制相似问题