【问题标题】:cannot access 'androidx.dataBinding.observable' (even though data binding class is generated)无法访问“androidx.dataBinding.observable”(即使生成了数据绑定类)
【发布时间】:2022-01-01 05:52:39
【问题描述】:

我在我的 Android Studio 项目中实现数据绑定时遇到问题。我收到以下错误:

无法访问超类型“androidx.databinding.Observable” 'com.russ.beatbox.databinding.MainActivityBinding'。检查你的 缺少或冲突依赖项的模块类路径

即使我拥有所有 Gradle 依赖项并且生成了绑定类。我尝试过重建、使缓存/重新启动无效、清理项目、重命名文件以及使用不同的 Gradle 导入语法,但似乎没有任何效果。这是 Android Studio 的错误吗?

这是我的MainActivity,错误来自binding.recView.apply

package com.russ.beatbox

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.GridLayoutManager
import com.russ.beatbox.databinding.MainActivityBinding

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding: MainActivityBinding =
            DataBindingUtil.setContentView(this, R.layout.main_activity)



        binding.recView.apply{
            layoutManager = GridLayoutManager(context, 3)
        }
    }
}

我的布局:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <androidx.recyclerview.widget.RecyclerView

        android:id="@+id/rec_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</layout>

还有我的模块 Gradle 文件:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.russ.beatbox"
        minSdk 23
        targetSdk 31
        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
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

【问题讨论】:

    标签: android-studio gradle android-databinding


    【解决方案1】:

    在您的模块 build.gradle 文件中添加数据绑定、片段和实时数据的实现。

    完成后,您的文件应如下所示:

    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'kotlin-kapt'
    }
    
    android {
        compileSdk 30
    
    
        defaultConfig {
            configurations.all {
                resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
            }
            applicationId "org.evolvedigital.unscrambleit"
            minSdk 23
            targetSdk 30
            versionCode 1
            versionName "1.0"
    
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = '1.8'
        }
    
        buildFeatures {
            dataBinding = true
        }
    }
    
    dependencies {
    
        implementation 'androidx.core:core-ktx:1.7.0'
        implementation 'androidx.appcompat:appcompat:1.3.1'
        implementation 'com.google.android.material:material:1.4.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
        implementation 'androidx.databinding:databinding-runtime:7.0.3'
        implementation 'androidx.fragment:fragment-ktx:1.4.0'
        implementation 'androidx.legacy:legacy-support-v4:1.0.0'
        implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0'
        implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
        testImplementation 'junit:junit:4.+'
        androidTestImplementation 'androidx.test.ext:junit:1.1.3'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    }
    

    如果您已经拥有这些依赖项,请将它们更新到最新版本。请注意,使用 android 库中最新依赖项的最低 compileSdk 版本是 31,因此如果项目不是最新的,您可能需要相应地更新项目

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      相关资源
      最近更新 更多