首页 > 解决方案 > DataBinding 错误的编译类

问题描述

我被这个问题困住了。一切都很好,但 DataBinding 代码生成器在编写代码时出错。我写错东西了吗?如果你们遇到和我一样的问题,并且成功解决了,请帮助我。这是我的问题: ActivityLoginBinding

我没有名为 View 的类,它只是一个包名。看这个 :

文件夹结构

也许我的 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">

    <data>

        <variable
            name="activity"
            type="galihlprakoso.com.surat_kaleng_app.View.LoginActivity"/>

    </data>
    <android.support.constraint.ConstraintLayout
        android:background="@drawable/main_bg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="galihlprakoso.com.surat_kaleng_app.View.LoginActivity">


        <ImageView
            android:scaleType="centerCrop"
            android:src="@drawable/main_background"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <TextView
            android:text="Surat Kaleng"
            android:textSize="40sp"
            android:layout_marginBottom="20dp"
            app:layout_constraintBottom_toTopOf="@id/act_login_main_logo"
            android:textColor="@android:color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            android:textAlignment="center"
            android:fontFamily="@font/ptmono"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />

        <ImageView
            android:id="@+id/act_login_main_logo"
            android:src="@drawable/main_logo"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_width="200dp"
            android:layout_height="200dp" />

        <Button
            android:onClick="@{()->activity.doLogin()}"
            android:text="@string/login_dengan_google"
            android:fontFamily="@font/ptmono"
            android:textColor="@android:color/white"
            android:background="@drawable/main_btn"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_margin="20dp"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />

        <TextView
            android:text="Menghubungkan orang terdekat secara misterius."
            app:layout_constraintTop_toBottomOf="@id/act_login_main_logo"
            android:textColor="@android:color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            android:textAlignment="center"
            android:fontFamily="@font/ptmono"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />

        <ImageView
            android:src="@drawable/login_top_menu"
            android:layout_margin="20dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            android:layout_width="50dp"
            android:layout_height="50dp" />

    </android.support.constraint.ConstraintLayout>
</layout>

这是错误:

/Users/galihlarasprakoso/Projects/Android/suratkalengapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/surat_kaleng_app/databinding/ActivityLoginBinding.java:12: error: cannot find symbol
import galihlprakoso.com.surat_kaleng_app.View;
                                         ^
  symbol:   class View
  location: package galihlprakoso.com.surat_kaleng_app
/Users/galihlarasprakoso/Projects/Android/suratkalengapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/surat_kaleng_app/databinding/ActivityLoginBinding.java:19: error: package View does not exist
  protected View.LoginActivity mActivity;
                ^
/Users/galihlarasprakoso/Projects/Android/suratkalengapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/surat_kaleng_app/databinding/ActivityLoginBinding.java:27: error: package View does not exist
  public abstract void setActivity(@Nullable View.LoginActivity activity);
                                                 ^
/Users/galihlarasprakoso/Projects/Android/suratkalengapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/galihlprakoso/com/surat_kaleng_app/databinding/ActivityLoginBinding.java:30: error: package View does not exist
  public View.LoginActivity getActivity() {
             ^
4 errors

我应该怎么办?

标签: androiddata-bindingkotlinandroid-databinding

解决方案


重命名(shi​​ft + F6)查看包。您可以将其重命名为views/ui或其他任何名称。

<variable
   name="activity"
   type="galihlprakoso.com.surat_kaleng_app.views.LoginActivity"/>

始终遵循鼓励遵循的java 命名约定。


推荐阅读