Can't resolve Android databinding class
While using data binding , I am not able to get class MainActivityBinding
as per Data Binding Guide
My layout name is activity_main.xml
.
I am also see Android - DataBinding - How and when the Binding classes will be generated? but it can't help me.
DataBinding class will be generated based on your xml file name. It is clearly mentioned in doc you are following.
By default, a Binding class will be generated based on the name of the layout file, converting it to Pascal case and suffixing “Binding” to it. The above layout file was main_activity.xml so the generate class was MainActivityBinding
If your xml name is activity_main.xml
than DataBinding class name will be ActivityMainBinding
.
If your xml name is main_activity.xml
than DataBinding class name will be MainActivityBinding
.
Dont forget to clean and build project once
you can follow this tutorial for more about DataBinding
TRY Renaming the xml file to another name and check if binding works once it works rename it back to the one that was used.
That helped for Android Studio 3.1
Thanks to all for your answer.I found solution with ContentMainBinding
class name for data binding.
Lets me explain.
NOTE: While using layout with <include ...
here is <include layout="@layout/content_main"
having Data Binding functionality, the class name related to include layout name. Here is the ContentMainBinding
My layout file are as below:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.databindingdemo.app.MainActivity">
...
<include layout="@layout/content_main" />
...
</android.support.design.widget.CoordinatorLayout>
And content_main.xml is layout where I added my Data Binding layout code.
So instead of using MainActivityBinding
it can resolved with ContentMainBinding
The code which work for me is below:
//Code for data binding
ContentMainBinding contentMainBinding = DataBindingUtil.setContentView(this, R.layout.content_main);
user = new User("Pranay", "Patel", "[email protected]", "9999999999");
contentMainBinding.setUser(user);
DONE.
Make sure your activity_main.xml file is enclosed with layout tags like so:
<?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">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.constraint.ConstraintLayout>
</layout>