Kotlin-DataBinding-Error:检查模块类路径是否缺少依赖项或发生冲突 [英] Kotlin-DataBinding-Error: Check your module classpath for missing or conflicting dependencies

查看:127
本文介绍了Kotlin-DataBinding-Error:检查模块类路径是否缺少依赖项或发生冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我该如何解决此问题.我无法使此数据绑定有效,我已经尝试了所有方法. Build.gradle(模块应用)

How can I solve this problem. I can't make this data binding work, I have tried everything. Build.gradle(module app)

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

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.fusion.alen.ask"
        minSdkVersion 16
        targetSdkVersion 27
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    androidExtensions {
        experimental = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }

}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:animated-vector-drawable:27.1.1'
    implementation 'com.android.support:support-vector-drawable:27.1.1'
    implementation 'com.android.support:customtabs:27.1.1'
    implementation 'com.android.support:cardview-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:recyclerview-v7:27.1.1'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android-extensions'
repositories {
    mavenCentral()
}

我尝试添加kapt"com.android.databinding:compiler:$ compiler_version",但它给了我一个错误. Build.gradle(模块项目)

I tried adding kapt "com.android.databinding:compiler:$compiler_version" but it gives me an error. Build.gradle(Module project)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext{
        kotlin_version = '1.2.71'
        compiler_version = '3.2.1'
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:4.2.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

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

这是我的profile_fragment.xml,我已按照文档说明进行操作

This is my profile_fragment.xml, I have followed documentation instructions

<layout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <variable
            name="user"
            type="com.alen.ask.UserModel.User" />
    </data>

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteY="25dp">


        <LinearLayout
            android:id="@+id/profile_box"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:background="@color/primaryColor"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/app_bar">

            <LinearLayout
                android:id="@+id/qff_box"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="5"
                android:orientation="horizontal"
                android:baselineAligned="false">


                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/questions_number"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="18sp"
                        android:textStyle="bold"
                        **android:text="@{user.questionsNum}"************
                        tools:text="0" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/followers_number"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="18sp"
                        android:textStyle="bold"
                        **android:text="@{user.followersNum}"************
                        tools:text="0" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/following_number"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="18sp"
                        android:textStyle="bold"
                        **android:text="@{user.followingNum}"***********
                        tools:text="0" />

                </LinearLayout>
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/app_bar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@color/primaryDarkColor"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <TextView
                android:id="@+id/username_text"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_weight="1"
                **android:text="@{user.name}"**
                android:textColor="@color/primaryTextColor"
                android:textSize="18sp"
                android:layout_marginStart="8dp" />
        </LinearLayout>

    </android.support.constraint.ConstraintLayout>

</layout>

我的用户数据类:

data class User(val name: String,
                val email: String,
                val uid: String,
                val photo: String,
                val postsList: ArrayList<String> = ArrayList(),
                val questionsNum: Int = 0,
                val followersNum: Int = 0,
                val followingNum: Int = 0
                ) 

这是在ProfileFragmen类中的onCreateView方法中

This is inside ProfileFragmen class, in onCreateView method

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val binding = ProfileFragmentBinding.inflate(inflater, container, false)
        binding.user = user
}

该行binding.user =用户给了我错误:无法访问类'UserModel.User'.检查您的模块类路径是否缺少依赖项或发生冲突 我如何解决此问题,我遵循了DataBinding文档中的说明,但我认为我没有犯任何错误.我曾尝试清理和重建项目,但没有成功.我尝试添加那些"kapt"依赖项,但是没有用.... File-> ProjectStructure-> Gradle版本:4.10.1,AndroidPluginVersion:3.2.1,KotlinLanguageVersion:1.2,KotlinPluginVersion:1.2.71-release-Studio3.2-1

That line binding.user = user gives me error: Cannot access class 'UserModel.User'. Check your module classpath for missing or conflicting dependencies How can I solve this, I have followed instructions from DataBinding documentation and I don't think I have made any mistake. I have tried cleaning and rebuilding the project, but it didn't work. I have tried adding those 'kapt' dependencies, didn't work.... File->ProjectStructure->Gradle version: 4.10.1, AndroidPluginVersion: 3.2.1, KotlinLanguageVersion: 1.2, KotlinPluginVersion: 1.2.71-release-Studio3.2-1

谢谢.

推荐答案

将文件夹UserModel重命名为userModel,然后清理/重建项目.我遇到了同样的问题,将文件夹的首字母设置为小写时,错误消失了.将来,请像使用变量一样,将camelCase用作您的文件夹名称.第一个字母的大写字母通常用于课程.

Rename your folder UserModel to userModel then clean/rebuild your project. I had the same problem and the error disapeared when set my folder's first letter to lower case. In the future use camelCase for your folders name just like for variables. Upper case on the first letter is usually for classes.

这篇关于Kotlin-DataBinding-Error:检查模块类路径是否缺少依赖项或发生冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆