当前位置: 首页 > 知识库问答 >
问题:

Kotlin-Android:未解析的引用数据绑定

翟卓君
2023-03-14

我使用新的数据绑定库在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)未解析引用:DataBinding
错误:(37,27)未解析引用:FragmentDataBinding

我如何使用android-databinding库与Kotlin?

我的顶级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 Studio1.4、Build tools 23.0.1、Android SDK 23、SDK tools 24.4.0

共有2个答案

乔凯康
2023-03-14

我找到了新的解决方法,希望对你有帮助。

首先检查插件是否应用:

apply plugin: 'kotlin-kapt'

然后

android {
    ...
    ...
    dataBinding {
        enabled = true
    }
    ...
    ...
}

依赖项中可能有错误:

使用

kapt 'com.android.databinding:compiler:3.1.4'

而不是

compile 'com.android.databinding:compiler:3.1.4'

您可以访问这里获取新版本

谢谢.

龙兴学
2023-03-14

尝试使用此配置:

在主建筑中。级:

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
}
 类似资料:
  • 我一直得到错误"未解决的引用:绑定"。有人知道我错过了什么吗?我已经试着更新了一切。但是绑定不起作用。 建筑格拉德尔。(module.app):

  • 我试图使用新的相机硬件API(android.hardware.camera2)的示例代码为我的Android应用程序。首先,我通过Android Studio的静态编程语言插件的自动转换功能将Java代码转换为静态编程语言代码。下面是一段转换后的代码: 我得到了未解决的引用错误: 但是这些常数在原始Java代码中是可以识别的。这些错误有什么解决办法吗?

  • 我使用Android Studio Beta 1与和。我还启用了数据绑定: 但不幸的是,Kotlin类看不到从布局生成的类,因为我会遇到如下错误: 错误:(17,31)未解析的引用:数据绑定 错误:(39,36)未解决的引用:MyFragment绑定 当然,Java类可以看到这些生成的类。

  • 当我尝试将数据绑定导入MainActivity时,会出现“未解析引用:数据绑定”错误。 主活动文件: 其中包名是我的包名。包名被识别,只有数据绑定不被识别,因此它显示为红色。 我想正是因为这个,碎片登录绑定 也不被承认。 项目build.gradle文件: 应用程序build.gradle文件: 我已经尝试遵循这个codelabhttps://codelabs.developers.google.

  • 这一行: 给我错误。 我的项目创建过程非常基本:在Intellij idea中: