Kotlin-DataBinding-Error:检查模块类路径是否缺少依赖项或发生冲突 [英] Kotlin-DataBinding-Error: Check your module classpath for missing or conflicting dependencies
问题描述
我该如何解决此问题.我无法使此数据绑定有效,我已经尝试了所有方法. 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屋!