首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解决的参考数据库-AndroidStudio4.0

未解决的参考数据库-AndroidStudio4.0
EN

Stack Overflow用户
提问于 2020-06-09 18:08:12
回答 3查看 5.8K关注 0票数 4

我一直收到错误:“未解决的引用:绑定”和“未解决的引用: ActivityMainBinding”。

我正在使用AndroidStudio4.0,Android插件版本: 4.0.0和Gradle版本6.1.1。

build.gradle (模块: app):

代码语言:javascript
复制
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.example.twowaydatabinding"
        minSdkVersion 24
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    buildFeatures {
        dataBinding = true
        viewBinding = true
    }
}

dependencies {
    def lifecycle_version = "2.2.0"

    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    // ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
    // LiveData
    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
}

build.gradle (项目):

代码语言:javascript
复制
buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

activity_main.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="viewModel"
            type="com.example.twowaydatabinding.MainActivityViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <!-- layout content -->
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

MainActivity.kt:

代码语言:javascript
复制
package com.example.twowaydatabinding

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import com.example.twowaydatabinding.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private lateinit var viewModel : MainActivityViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
        viewModel = ViewModelProvider(this).get(MainActivityViewModel::class.java)
        binding.viewModel = viewModel
        binding.lifecycleOwner = this
    }
}

MainActivityViewModel.xml:

代码语言:javascript
复制
package com.example.twowaydatabinding

import androidx.databinding.Bindable
import androidx.databinding.Observable
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class MainActivityViewModel : ViewModel(), Observable {

    @Bindable
    val userName = MutableLiveData<String>()

    init {
        userName.value = "Frank"
    }

    override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
        TODO("Not yet implemented")
    }

    override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
        TODO("Not yet implemented")
    }
}

我试过:

  • 构建->清洁项目,然后构建->重建项目
  • 文件->使缓存无效/重新启动

但什么都帮不上忙。类ActivityMainBinding从不生成。

当我转到import com.example.twowaydatabinding.databinding.ActivityMainBinding的MainActivity.kt声明时,它会将我重定向到activity_main.xml。代码没有显示任何错误,但是当我试图构建项目时,这些绑定错误就会显示出来。

我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2020-08-06 04:33:36

而不是这一行

代码语言:javascript
复制
buildFeatures {
        dataBinding = true
        viewBinding = true
    }

写这行

代码语言:javascript
复制
buildFeatures {
        dataBinding true
        viewBinding true
    }

在主要活动中试试这个,

代码语言:javascript
复制
 binding = ActivityMainBinding.inflate(layoutInflater)
 setContentView(binding.root)
票数 9
EN

Stack Overflow用户

发布于 2020-06-09 18:17:03

,这对我有用

1)删除".gradle“文件夹,删除".idea”文件夹,并删除app文件夹下的构建文件夹

2)点击“文件->失效缓存/重新启动”

票数 0
EN

Stack Overflow用户

发布于 2020-06-09 18:23:10

在build.gradle中添加像这样的数据绑定(Module:app)

代码语言:javascript
复制
  defaultConfig {
    dataBinding {
        enabled true
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62289186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档