在使用数据绑定时,我无法按照Data Binding Guide中的方法获取MainActivityBinding
类。
我的布局文件名为activity_main.xml
。我也看了Android - DataBinding - How and when the Binding classes will be generated?,但它没能帮助我。
在使用数据绑定时,我无法按照Data Binding Guide中的方法获取MainActivityBinding
类。
我的布局文件名为activity_main.xml
。我也看了Android - DataBinding - How and when the Binding classes will be generated?,但它没能帮助我。
根据您所遵循的文档,DataBinding类将基于您的xml文件名生成。
默认情况下,将根据布局文件的名称生成绑定类,将其转换为帕斯卡命名法并在其后缀中添加“Binding”。上面的布局文件是main_activity.xml,因此生成的类是MainActivityBinding。
如果您的xml名称为activity_main.xml
,则DataBinding类名称将为ActivityMainBinding
。
如果您的xml名称为main_activity.xml
,则DataBinding类名称将为MainActivityBinding
。
别忘了清理并构建项目一次
您可以关注这个教程了解更多关于DataBinding的信息。
<layout>
标签中。 - NexenMyActivityBinding
改成 ActivityMyBinding
。再次感谢。 - Pooja尝试将xml文件重命名为另一个名称,然后检查绑定是否正常工作,一旦它工作正常,再将其重命名回使用过的名称。
这对于Android Studio 3.1有所帮助。
感谢大家的回答。我通过 ContentMainBinding
类名找到了数据绑定的解决方案。
注意:使用带有 <include ...
的布局时,如果 <include layout="@layout/content_main"
具有数据绑定功能,则与 include 布局名称相关联的类名为 ContentMainBinding
。
下面是我的布局文件:
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>
而 content_main.xml 是我添加了数据绑定布局代码的布局。
因此,可以使用 ContentMainBinding
来替代 MainActivityBinding
。
下面是对我有效的代码:
//Code for data binding
ContentMainBinding contentMainBinding = DataBindingUtil.setContentView(this, R.layout.content_main);
user = new User("Pranay", "Patel", "demoemail@gmail.com", "9999999999");
contentMainBinding.setUser(user);
DONE.
content_main
。如果你想要填充activity_main.xml
,那么请将其包装在<layout>
标签中,并使用ActivityMainBinding
类。 - Khemraj Sharma请确保您的activity_main.xml文件被包围在layout标签中,如下所示:
<?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>
<layout>
标签即可解决此问题。 - Rami Alloush如果DataBinding类名正确,并且您已经清理和重新构建了项目但仍然显示错误。
那么您可以尝试重启AndroidStudio。
我已经清理了项目,进行了重建,但是没有用。
然后我使缓存失效并重新启动了项目,但这也没有帮助我。
接着我改变了我的xml文件名 - 这非常好用。
所以,我想分享给你一件事,请更改你的xml文件名。
例如:如果你的xml文件是:activity_main.xml,并且在它的Java类中无法获取ActivityMainBinding..........那么将xml名称更改为main_activity.xml,然后在其Java类中使用MainActivityBinding作为“private MainActivityBinding binding;”
这样做很可能会解决问题。
我在更改程序包名称后遇到了同样的问题。尝试了很多方法(包括在此处提到的方法),最终通过手动导入数据绑定类来解决了这个问题:
import com.domain.my.databinding.MyActivityBinding;
1) Rebuild the project after adding the dataBinding in gradle.
2) Rebuild after adding layout tag in xml.
3) cleaning the project
4) rebuilding the project
5) Restarted the Android Studio
If the layout name is fragment_home, The Binding class name will be FragmentHomeBinding.