【发布时间】:2016-01-14 21:39:20
【问题描述】:
我使用新的数据绑定库用 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,构建工具版本 23.0.1,Android SDK 23,SDK 工具 24.4.0
【问题讨论】:
-
您只需要在最新版本的应用程序gradle文件中包含
apply plugin: 'kotlin-kapt'。 -
private lateinit var binding : FragmentDataBinding 是一种更好的初始化方式
标签: java android kotlin android-databinding