Databinding не существует: как его решить?

Я работаю над приложением Android с привязкой данных, но у меня всегда есть следующая ошибка:

Ошибка: Пакет my.package.databinding не существует.

Вот мой build.gradle на уровне проекта:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

Я также включил привязку в файле build.gradle на уровне модуля.

Теперь мой вопрос: почему возникает эта ошибка и как я могу ее решить?

Ответ 1

Эта проблема возникает, если ваш проект не компилируется. Привязка данных к базам данных должна генерировать код в именованном пакете, но он не может этого сделать, если проект не компилируется в первую очередь.

Чтобы решить эту проблему, доведите свой проект до точки, где он компилируется. Если необходимо, отключите привязку данных для этого.

Ответ 2

проверьте свои xml файлы и прокомментируйте любые @{}, которые вы использовали, если у вас на самом деле нет ваших данных. Без данных вы снова и снова будете сталкиваться с этой ошибкой.

Ответ 3

Я столкнулся с этой проблемой в проекте из 4 модулей в Android Studio 2.3, это то, что указано @F43nd1r, но хочу документировать, что я сделал, чтобы решить это в моем случае.

Один из 4-х модулей имел более старую библиотеку поддержки Android в файле Gradle, в то время как остальные 3 были текущими. Это то, что мешало проекту правильно компилироваться и вызывало ошибку привязки данных.

Трудная часть заключалась в том, что вы не знаете об этом, если не открываете каждый файл build.gradle и не видите ли отображаемую ошибку. Он не отображал ошибку для компиляции.

Фактически я обновил эту область до более новой версии, чтобы соответствовать другим файлам build.gradle.

dependencies {
    ...
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support:support-v4:25.2.0'
    compile 'com.android.support:recyclerview-v7:25.2.0'
    compile 'com.android.support:design:25.2.0'
    ...
}

Ответ 4

Основываясь на аналогичных проблемах с SO, причины могут быть не связаны с привязкой данных к андроидам, а вместо этого из-за неправильного вызова переменных, как в этой проблеме, или некоторых других факторов как в этой другой проблеме. Вы должны предоставить более подробную информацию, если ни одна из этих ссылок не помогает.

Ответ 5

dataBinding {
    enabled = true
}

включил привязку данных в файле build build.gradle. его работала