代码之家  ›  专栏  ›  技术社区  ›  James Black

Jetpack数据绑定在与同一类相同的文件中生成了重复类

  •  4
  • James Black  · 技术社区  · 6 年前

    今天早上我遇到了一个错误,我的应用程序无法安装,我已经追踪到这个问题。我在同一个文件中有两个相同的类我不想包含整个生成的文件,因为它很长。

    public class AddVinDialogFragmentBinding extends androidx.databinding.ViewDataBinding implements android.databinding.generated.callback.OnClickListener.Listener {
        @Nullable
        private static final androidx.databinding.ViewDataBinding.IncludedLayouts sIncludes;
        @Nullable
        private static final android.util.SparseIntArray sViewsWithIds;
     :
        @Nullable
        private com.ui.EventHandler mHandler;
        @Nullable
        private final android.view.View.OnClickListener mCallback1;
        public class AddVinDialogFragmentBinding extends androidx.databinding.ViewDataBinding implements android.databinding.generated.callback.OnClickListener.Listener {
    
            @Nullable
            private static final androidx.databinding.ViewDataBinding.IncludedLayouts sIncludes;
    :
    }
    

    gradle.properties 我有这个: android.databinding.enableV2=true

    我的布局很简单:

    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
        <data>
            <variable
                name="vin"
                type="String" />
            <variable name="handler" type="com.ui.garage.handlers.EventHandler" />
        </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.ui.AddVinDialogFragment">
        <TextView
            android:layout_width="wrap_content"
            android:text="Please enter a VIN"
            android:layout_height="wrap_content" />
        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/add_vin_field"
            android:layout_width="200dp"
            android:maxLength="17"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp">
        <EditText
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="@string/vin"
            android:text="@={vin}" />
        </com.google.android.material.textfield.TextInputLayout>
    
        <Button
            android:id="@+id/button"
            android:onClick="@{() -> handler.addVin(vin)}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/submit" />
    </LinearLayout>
    </layout>
    

    我正在使用Android Studio 3.3 Canary 3

    有时我发现我的布局文件中有一个重复的类,然后它找不到 DataBindingComponent . 令人恼火的是,这是昨天的工作,我没有改变绑定从那时起。

    对可能的问题有什么建议吗?

    我删除了.Gealle和Mobile / Buff/*,并多次清理和重建,以及退出和重新启动Android Studio。

    我有三个布局文件与数据绑定和所有三个都有相同的错误。

    1 回复  |  直到 6 年前
        1
  •  2
  •   cherif    6 年前

    删除编译器依赖项,它与3.2.0中的绑定插件一起提供。至少对我有用。

    kapt "com.android.databinding:compiler:$gradleVersion