无法解析Android数据绑定类

pRa*_*NaY 44 data-binding android android-databinding

使用数据绑定时,我无法MainActivityBinding 按照数据绑定指南获取类

我的布局名称是activity_main.xml.我也看到了Android - DataBinding - 如何以及何时生成Binding类?但它无法帮助我.

Roc*_*cky 79

将根据您的xml文件名生成DataBinding类.您正在关注的文档中明确提到它.

默认情况下,绑定类将基于布局文件的名字中产生,将其转换为帕斯卡情况和后面添加"绑定"来了.上面的布局文件是main_activity.xml,因此generate类是MainActivityBinding

如果您的xml名称activity_main.xml比DataBinding类名称要多ActivityMainBinding.

如果您的xml名称main_activity.xml比DataBinding类名称要多MainActivityBinding.

别忘了清理和构建项目一次

您可以按照本教程了解有关DataBinding的更多信息

  • 如果您遇到无法解析的符号,请尝试将布局包装在“<layout>”标记中。 (3认同)
  • [这个答案可能对某人有帮助](/sf/answers/3610583161/) (2认同)

Ism*_*bal 21

TRY将xml文件重命名为另一个名称,并检查绑定是否有效,将其重命名为已使用的绑定.

这有助于Android Studio 3.1

  • 我重命名了act文件,它有效. (4认同)
  • 它比重新启动IDE更好 (2认同)

pRa*_*NaY 18

感谢您的回答.我找到了带有ContentMainBinding类名称的数据绑定解决方案.让我解释一下.

注意:虽然使用<include ...此处的布局<include layout="@layout/content_main"具有数据绑定功能,但与包含布局名称相关的类名称.这里是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>
Run Code Online (Sandbox Code Playgroud)

content_main.xml是我添加数据绑定布局代码的布局.

因此,而不是使用 MainActivityBinding它可以解决ContentMainBinding

对我有用的代码如下:

//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);
Run Code Online (Sandbox Code Playgroud)

DONE.


And*_*Lee 12

确保您的 activity_main.xml 文件包含如下布局标签:

<?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>
Run Code Online (Sandbox Code Playgroud)


Pha*_*inh 8

如果DataBinding类名称正确并且您曾经用于清理和重建项目但仍显示错误.
然后尝试重新启动 AndroidStudio


小智 8

我已经清理了项目,Rebuild已经完成......但没有用.然后无效的缓存并重新启动项目,这也没有帮助我.

然后我改变了我的xml文件名 - 这非常好用.

所以,我想与您分享一件事,请更改您的xml文件名.

例如:如果您的xml文件是:activity_main.xml,并且您无法在其Java类中获取ActivityMainBinding ..........然后将xml名称更改为main_activity.xml,然后在其java类中使用MainActivityBinding作为'私人MainActivityBinding绑定;'

这很可能会做.


Roh*_*eja 7

在这种情况下,如果重建和无效缓存都不起作用,那么您的某个xml文件中必定存在错误,您可能已使用@ {xyz.abc}并且xml中的xyz或abc一定存在问题.


小智 6

在我的情况下,删除应用程序构建文件夹然后重建项目解决了我的问题。

即使以下步骤也不起作用。

          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
Run Code Online (Sandbox Code Playgroud)

在应用程序 gradle 文件中启用数据绑定后,请重建。然后我们可以找到生成的 Binding 类。

          If the layout name is fragment_home, The Binding class name will be FragmentHomeBinding.
Run Code Online (Sandbox Code Playgroud)


hid*_*s02 6

我在更改我的源的包名后遇到了同样的问题,在我尝试了很多事情之后(包括这里提到的),我通过手动导入数据绑定类解决了问题:

import com.domain.my.databinding.MyActivityBinding;
Run Code Online (Sandbox Code Playgroud)


小智 5

确保在 build.gradle 文件中添加以下几行

数据绑定 { 启用 true }