我使用新的数据绑定库在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()
}
}
我在app dir中的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
尝试使用此配置:
在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
}
你可以在documentation of Android.看到
默认情况下启用版本3.2中的新编译器。
所以只需将您的Android Studio更新为V3.2或newer即可。并删除所有不必要的配置。
build.gradle
它会自动为您完成所有事情。
android {
dataBinding {
enabled = true
}
}
kapt 'com.android.databinding:compiler:3.0.1'
kapt
build.gradle(项目)
kapt {
generateStubs = true
}
使用kotlin_version = '1.2.71'
classpath 'com.android.tools.build:gradle:3.2.0'
。使用gradle latest version。
build.gradle(App)
kotlin latest version
重要事项不要只复制和粘贴配置。请参阅apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
compileSdkVersion 28
targetSdkVersion 28
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
以设置Kotlin版本。
grad了-wrapper.properties
this answer
使用kotlin语言时,在Android项目中添加数据绑定。
下面的步骤
- 首先你需要添加以下插件
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
- 启用了第二个dataBinding
**apply plugin: 'kotlin-kapt'**
点击“SYNC NOW”后,所有这一点都在app.build.gradle中添加
让我们举例来说你有编辑配置文件活动然后如何在kotlin中定义绑定变量?
**dataBinding {
enabled = true
}**
这里,get binding是处理哪种绑定对象的方法
lateinit var buildProfileBinding: ActivityBuildProfileBinding
buildProfileBinding = getBinding()
在我的情况下,添加
protected <T extends ViewDataBinding> T getBinding() {
return (T) binding;
}
解决了我的问题。我第一次忽略它,我认为这与问题无关:
未解决的参考数据绑定
但现在,数据绑定工作得很好。
我想分享自己的经验。在android studio中使用数据绑定与Kotlin足以添加
kapt {
generateStubs = true
}
之后“同步”,“制作项目”非常重要。之后,您的所有对象都将处于活动状态以供使用。
我找到了新的解决方案,希望它能帮到你。
首先检查是否应用了插件:
apply plugin: 'kotlin-kapt'
然后
android {
...
...
dataBinding {
enabled = true
}
...
...
}
您可能在依赖项中出错:
使用
kapt 'com.android.databinding:compiler:3.0.1'
代替
compile 'com.android.databinding:compiler:3.0.1'
谢谢。
Data Binding编译器的版本与项目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
它适用于1.0-rc4,put
kapt 'com.android.databinding:compiler:1.0-rc4'
进入你的依赖
感谢Ghedeon,评论中的链接
更新:Here's一个非常简单的hello world示例项目
要解决这个问题,你必须把它
apply plugin: 'kotlin-kapt'
在build.gradle(Module:app)的顶部,然后将此行放在依赖项中
kapt "com.android.databinding:compiler:[YOUR_ANDROID_PLUGIN_VERSION]"
你可以通过菜单找到android插件版本
File > Project Structure > Project
然后再次同步。如果您看到此警告,请忽略它。
第三方Gradle插件可能是原因
试试这个.Android 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'
}
配置数据绑定在kotlin中
build.gradle(文件夹应用)
apply plugin: 'kotlin-kapt'
android {
...
dataBinding {
enabled = true
}
}
dependencies {
// data binding
kapt "com.android.databinding:compiler:3.1.3"
}
享受Kotlin ......
这对我在android Studio ver 3.1.3中工作
apply plugin: 'kotlin-kapt'
dataBinding {
enabled = true
}
在你的app build.gradle
中添加以下内容
kapt "com.android.databinding:compiler:$android_plugin_version"
apply plugin: 'kotlin-kapt' // This one at top where plugin belong to
这样就可以了。
$android_plugin_version
是com.android.tools.build:gradle
中application build.gradle
的版本
另外,将此添加到您的模块build.gradle
android {
/// Existing Code
kapt {
generateStubs = true
}
}