В файле DataBinding файла '/activity_login.xml' обнаружен повторяющийся класс, BR не создается

Я в основном застрял с проблемой BR привязки данных Android. Всегда есть один файл activity.xml, но сгенерированный класс привязки показывает ошибку. Пожалуйста, дайте мне знать, как решить эту проблему.

В файле DataBinding файла '/activity_login.xml' обнаружен повторяющийся класс, BR не создается

У меня такая же проблема. И я не могу построить свой проект. Компилятор сообщает, что не может найти символ com.mypackage.example.databinding.MyActivityBinding

Denis Makovsky 05.06.2018 18:12

вы знали, как исправить эту проблему?

Denis Makovsky 05.06.2018 18:13

Да. Добавив android.databinding.enableV2 = true в свойства Gradle

Dipendra Sharma 07.06.2018 05:22

Для меня файл ..Binding помечается как недопустимый, только если он открыт. В любом случае сборка проходит успешно ... Когда я делаю чистку и пересборку, ошибка исчезает. Только не открывайте сгенерированный файл привязки, вот и все.

Mr. Blond 02.05.2019 00:41

вы можете сделать снимок экрана вместо того, чтобы делать снимки со своего мобильного телефона

Vikas Pandey 10.06.2019 11:27
33
5
11 713
18

Ответы 18

Я бы сделал это, добавив android.databinding.enableV2 = true в свойствах Gradle. Он работал нормально.

Не работает. Это случается только тогда, когда я добавляю kapt "android.arch.persistence.room:compiler:$roomVersion" в build.gradle

Hugo Landim 10.03.2019 12:42

для меня заменить kapt на annotationProcessor сработал

annotationProcessor "com.android.databinding:compiler:3.1.3"

У этой проблемы много причин. Вы можете попробовать эту команду. работал:)

gradlew build 

Добро пожаловать в Stack Overflow. Лучший ответ объяснил бы, почему это работает и почему он отличается от других ответов.

CGritton 08.08.2018 20:47

Пользовательское имя класса привязки решило мою проблему

<data class = "ContactItem">
    …
</data>

Куда вы это добавили?

Nelson Matias 26.10.2018 01:48

Внутри тега макета

xyz 22.11.2018 08:47

У меня тоже сработало. Не знаю, по какой причине был продублирован класс. Вот ссылка на переименование ViewDataBinding: developer.android.com/topic/libraries/data-binding/…

k_o_ 27.03.2019 01:05

У меня была такая же проблема, потому что у меня была ссылка на переменную неизвестного класса

<variable name = "handler" type = "com.example.org.UnknownClass" />

Мне просто нужно было исправить эту ошибку.

Если вы используете Комната ORM, просмотрите их, если вы недавно что-то изменили. Любая проблема с синтаксическим анализом запросов SQL, а также возвращаемый тип вашего метода, который должен полностью соответствовать результату запроса, может повлиять на привязку данных и показать ненормальные ошибки.

У меня была похожая проблема:

@Query("SELECT * from NotSellingReason where NotSellReasonId > 0")
    List<ReasonModel> getUnvisitingReasons();

У меня здесь был неправильный общий тип. Я должен использовать ReasonEntity вместо ReasonModel, и это занимает много времени, чтобы получить его!

Another problem which can fail the data binding is about Dagger DI. If you are using DI in your project be sure that all injected classes, ... are provided or bound by the dagger.

в моем случае я сделал объявление переменной класса @Entity в одной строке (например, private double min, max, degree;) и начал получать эту ошибку, а после этого сообщения и другого, связанного с комнатой, поэтому я внес изменения в объявления нескольких строк для каждой переменной (например, частное двойное минимальное; частное двойное максимальное; частное двойное градус;), перестройте его и установите приложение.

Naval Kishor Jha 28.10.2018 19:00

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

Parikshit Chalke 29.10.2018 14:28

Святая долбаная трата времени, я удалял неиспользуемые ресурсы и несколько классов, думая, что Dagger уловит недостающие зависимости, ошибка NOPE DataBinding внезапно. 20 секунд перебора Кинжала после 2 часов восстановления / чистки и поиска.

zabson 19.11.2018 02:59

В моем случае у меня неправильный возврат для моего метода запроса.

Hugo Landim 10.03.2019 13:12

В моем случае эта проблема была вызвана тем, что в классе Entity для Room ORM имена установщика и получателя частного поля не совпадали с соглашением об именах java bean-компонентов.

В моем случае это произошло из-за того, что я заменил List на ArrayList; Проблема решена при возврате к List;

 @Query("SELECT * FROM " + PurchaseConstants.TABLE_NAME + " ORDER BY purchaseTime DESC")
    List<Purchase> getAllPurchases();

У меня такая же проблема. В моем случае я использовал Номер и не писал метод установки в классе Entity. Так что вы тоже проверяете свое дело.

Если вы используете Room ORM Проверьте свой DAO clazz

Пример:

@Обновлять String update (Call call); // сбой

@Update
long update(Call call);//fail

@Update
int update(Call call);//success databinding build


@Update
void update(Call call);//success databinding build

спасибо за сообщение ... Я также столкнулся с этой проблемой, но я использовал строку для первичного ключа, которая вызывает проблему

Ucdemir 24.04.2019 10:05

в моем случае проблема была связана с частным модификатором для метода onclick, назначенным с помощью масляного ножа, убедитесь, что все поля и методы, назначенные с помощью масляного ножа, являются общедоступными

В моем случае это была проблема с версией Dagger 2. 2.17 и выше (последняя версия на сегодняшний день - 2.20) не работала. Возврат к версии 2.16 решил проблему для меня.

См. Дополнительные обсуждения этого здесь

Это решило мою проблему. Я могу собрать и запустить свое приложение.

malhobayyeb 10.03.2019 09:16

Вы можете получить эту ошибку при включении макета в xml.

<include layout = "@layout/any_layout" />

чтобы включить другой макет в ваш xml, следуйте этому https://stackoverflow.com/a/38681418/1893503

В моем случае проблема заключалась в том, что ARouter не очень хорошо поддерживает kotlin когда я использую аннотацию @Autowired , сбой сборки и советы dataBinding не найдены , дублирующийся класс найден в

файл ActivityLoginBinding。 Затем добавьте @JvmField перед @ Autowired , Он работает и добивается успеха。

поэтому , когда вы используете AndroidStuido, конвертируйте Java в Kotlin , Будьте осторожны , Файлы Kotin, сгенерированные таким образом, могут иметь синтаксические ошибки Это может быть некоторая статическая функция Java, аннотация @bindingadapter в привязке данных, преобразованная в kotlin, и вы получите Ошибка. Решите это, и все готово.

например на Java

 @BindingConversion
    public static String converStr(CommonUser user) {
        return user.getAge() + user.getName() + user.isSingle();
    }

    //同上,不需要显示因如何调用,在xml中即可使得textview有一个 bg 的属性,app命名空间的,
    @BindingAdapter({"bg"})
    public static void randomName(TextView tv, String color) {
        tv.setTextColor(Color.parseColor(color));
    }

при использовании этого в котлине, например:

//this is root node in the kotlin file ,no {} 
@BindingAdapter("srlEnableRefresh")
fun randomName( tv:TextView, color:String) {
    tv.setTextColor(Color.parseColor(color))
}

или же

object Tools{
   @JvmStatic
    @BindingAdapter("srlEnableRefresh")
    fun randomName( tv:TextView, color:String) {
        tv.setTextColor(Color.parseColor(color))
    } 
}

Надеюсь, этот ответ отвечает на ваш вопрос. Мой английский очень плохой! ^ ^

У меня было 37 таких повторяющихся ошибок, и все это было из-за неправильного импорта в 1 файл макета.

    <import type = "android.view.View"/>

    <variable
        name = "viewModel"
        type = "wrong.package.name.SViewModel"/>

Я нашел его, открыв все свои XML-файлы макета и проверив его руководство. Сама ошибка была совершенно не связана, поскольку она все еще существует, если я вручную перейду в / build / generated / data_binding ..., но сборка больше не терпит неудачу и не сообщает об ошибках или предупреждениях.

Да, это шанс

Dipendra Sharma 07.03.2019 13:06

Я использую в своем проекте Kotlin + dagger + data binding. Этот подход должен работать независимо от версии dagger2.

Что я сделал, чтобы исправить свою проблему:

  1. сделал android.databinding.enableV2=false в файле gradle.properties и очистил и перестроил

  2. смог увидеть фактическую ошибку, связанную с неправильным прицелом dagger2

  3. Исправлен мой график кинжала и другие операторы импорта

  4. установить обратно на android.databinding.enableV2=true

Тоже наткнулся на это и блин, отстой, когда такое случается. Честно говоря, я бы пошел двумя путями:

  • поскольку привязка не полностью сгенерирована, вы можете не добраться до интересных ошибок сборки (например, комната пытается сгенерировать ее шаблон), поэтому вам следует увеличить флаг -Xmaxerrs для максимального количества отображаемых ошибок

  • в моем случае меня вдохновило переключиться на другую версию плагина Android Studio и Gradle (в бета-канале AS 3.4 я получил фактические ошибки сборки)

если вы используете библиотеку сохраняемости комнаты, проверьте еще раз ее код. У меня была такая же проблема, и, посмотрев мой код, я увидел. Этот вопрос о сохранении комнаты ..

Ну наконец то .. Я использую библиотеку Room Persistence, я проверил весь свой код и нашел. Проверьте класс модели вашей комнаты.

Другие вопросы по теме