数据绑定-ActivityMainBinding.java错误:参数过多

时间:2018-10-02 13:31:58

标签: java android binding

最近,我在Android上发现了DataBinding。效果很好,我遵循了一些指南,但是直到我的项目在视图中包含更多元素之前,它一直有效。一旦达到一定数量,我会得到:

Output

我可以注意到我添加到视图中的每个元素在ActivityMainBinding.java中都生成了属性,好像我已经达到了一定限制?

整个xml被

包围
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">


</layout>

我已经在Google和此处进行了搜索,但似乎没有人遇到类似的问题。它与元素计数严格相关-我再添加一个元素就会引发错误。 请给我一些建议或解决方法。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Android Gradle插件版本3.1.0-alpha06和更高版本,请在gradle.properties文件中添加以下选项:

android.databinding.enableV2=false

以前的数据绑定编译器版本在编译托管代码的同一步骤中生成了绑定类。如果托管代码无法编译,则可能会报告多个错误,提示未找到绑定类。新的数据绑定编译器通过在托管编译器构建应用之前生成绑定类来防止这些错误。

答案 1 :(得分:0)

我对具有嵌套滚动视图的如此复杂的 xml 文件遇到了同样的问题。我通过将 xml 文件分成另一个布局并通过引用将它们包含在一个文件中来解决这个问题。

假设您有一个正在处理的 main_layout.xml 文件。通过取出适当的部分来创建另一个 xml 文件。示例,

main_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    <RelativeLayout
                android:layout_width="match_parent"
                android:id="@+id/lytFirstContent"
                android:layout_alignParentTop="true"
                android:layout_height="wrap_content">
                <include layout="@layout/first_content"/>
    </RelativeLayout>
    <RelativeLayout
                android:layout_width="match_parent"
                android:id="@+id/lytSecondContent"
                android:layout_below="@+id/lytFirstContent"
                android:layout_height="wrap_content">
                <include layout="@layout/second_content"/>
     </RelativeLayout>
        
</RelativeLayout>

first_content.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    <RelativeLayout
                android:layout_width="match_parent"
                android:layout_alignParentTop="true"
                android:layout_height="wrap_content">
            <!-- Your other views -->
    </RelativeLayout>
    
        
</RelativeLayout>

second_content.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    <RelativeLayout
                android:layout_width="match_parent"
                android:layout_alignParentTop="true"
                android:layout_height="wrap_content">
            <!-- Your other views -->
    </RelativeLayout>
    
        
</RelativeLayout>