ошибка: не удается найти класс символа ActivityMainBindingImpl

Я изучаю привязку данных, я пробовал 3 раза и сделал именно то, что описано в руководстве, но при запуске приложения я продолжаю получать сообщение об ошибке «ошибка: не удается найти класс символов ActivityMainBindingImpl».

Он генерирует файл java с ActivityMainBindingImpl, должны ли быть проблемы в моем SDK?

Главный :

  private ActivityMainBinding activityMainBinding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        activityMainBinding.setPerson(getCurrentPerson());
    }

    public Person getCurrentPerson(){
        Person person = new Person();
        person.setName("lance");
        person.setLastName("claudio");
        return person;
    }

Модель:

public class Person {
   private String name;

    public Person(String name, String lastName) {
        this.name = name;
        this.lastName = lastName;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    private String lastName;
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <data>

        <variable
            name="person"
            type="com.pedrovs.databindingexample.Person" />

    </data>
    <LinearLayout 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:orientation="vertical"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{person.setName()}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{person.setLastName()}">

        </TextView>

    </LinearLayout>

</layout>

Это мой Gradle: APP

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28

    dataBinding{
        enabled=true
    }

    buildToolsVersion "29.0.3"
    defaultConfig {
        applicationId "com.pedrovs.databindingexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

Привязка данных также включена в Gradle.

Спасибо!


person Pedro Dos Santos    schedule 11.02.2020    source источник
comment
На вкладке Build попробуйте очистить проект с помощью Clean Project, а затем перестроить с помощью Rebuild Project   -  person Mayokun    schedule 11.02.2020
comment
@Mayokun спасибо за ваш ответ, сделал, но после очистки я перестроил и получил ту же ошибку.   -  person Pedro Dos Santos    schedule 11.02.2020
comment
Попробуйте сделать свой кеш недействительным и перезапустить AS, например, Файл - ›Недействительный кеш / перезапустить   -  person Mayokun    schedule 11.02.2020
comment
@Mayokun все та же ошибка, это странно, потому что это точно так же, как в учебнике   -  person Pedro Dos Santos    schedule 11.02.2020
comment
Можете ли вы добавить файл градиента вашего приложения, т.е. build.gradle(app)   -  person Mayokun    schedule 11.02.2020
comment
@Mayokun Готово, добавлен градиент   -  person Pedro Dos Santos    schedule 11.02.2020


Ответы (1)


используйте этот xml:

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <data>

        <variable
            name="person"
            type="com.pedrovs.databindingexample.Person" />

    </data>
    <LinearLayout 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:orientation="vertical"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{person.name}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{person.lastName}">

        </TextView>

    </LinearLayout>

</layout>

у вас была ошибка при использовании привязки данных в xml, проверьте мой код со своим везде, где вы использовали person в своем xml.

person mahdi shahbazi    schedule 12.02.2020