Kotlin-DataBinding-Error: Check your module classpath for missing or conflicting dependencies
Solution 1
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.
Solution 2
The reason is because one of your package name begins with Capital.
The class name which uses databinding should begin with capital, and package name should start with lower case. [This is not just for databinding, this is the convention followed commonly]
[Internally when dataBinding generates bindingImplementation for your xml, it parses your package name to identify the class, if the package name begins with capital it is not able to separate the Class name from the package name, and it throws an error.]
Solution 3
Had the same issue, fixed it by changing build features in the build.gradle
module from viewBinding
to dataBinding
buildFeatures {
dataBinding = true
}
Related videos on Youtube
Alen
Updated on July 09, 2022Comments
-
Alen almost 2 years
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() }
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() } }
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>
My User data class:
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 )
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 }
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
Thank you.
-
Alen about 5 yearsMy User data class is inside UserModel folder so removing it doesn't work
-
Karlom about 5 yearsPlease notice suggestions should not be posted as answer.
-
Nguyễn Quang Tuấn over 3 yearsit's ok. i dont think problem like that :D. thanks
-
sophin over 3 yearsI was checking on dependencies and did invalidate cache and restart. Thanks for this
-
Vishva Vijay almost 3 yearsI also had same issue, It was a problem because I had First letter of my package name in Caps, I changed it to small nd it works. THanks