Я в основном застрял с проблемой BR привязки данных Android. Всегда есть один файл activity.xml, но сгенерированный класс привязки показывает ошибку. Пожалуйста, дайте мне знать, как решить эту проблему.
вы знали, как исправить эту проблему?
Да. Добавив android.databinding.enableV2 = true в свойства Gradle
Для меня файл ..Binding помечается как недопустимый, только если он открыт. В любом случае сборка проходит успешно ... Когда я делаю чистку и пересборку, ошибка исчезает. Только не открывайте сгенерированный файл привязки, вот и все.
вы можете сделать снимок экрана вместо того, чтобы делать снимки со своего мобильного телефона
Я бы сделал это, добавив android.databinding.enableV2 = true в свойствах Gradle. Он работал нормально.
Не работает. Это случается только тогда, когда я добавляю kapt "android.arch.persistence.room:compiler:$roomVersion" в build.gradle
для меня заменить kapt на annotationProcessor сработал
annotationProcessor "com.android.databinding:compiler:3.1.3"
У этой проблемы много причин. Вы можете попробовать эту команду. работал:)
gradlew build
Добро пожаловать в Stack Overflow. Лучший ответ объяснил бы, почему это работает и почему он отличается от других ответов.
Пользовательское имя класса привязки решило мою проблему
<data class = "ContactItem">
…
</data>
Куда вы это добавили?
Внутри тега макета
У меня тоже сработало. Не знаю, по какой причине был продублирован класс. Вот ссылка на переименование ViewDataBinding: developer.android.com/topic/libraries/data-binding/…
У меня была такая же проблема, потому что у меня была ссылка на переменную неизвестного класса
<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;) и начал получать эту ошибку, а после этого сообщения и другого, связанного с комнатой, поэтому я внес изменения в объявления нескольких строк для каждой переменной (например, частное двойное минимальное; частное двойное максимальное; частное двойное градус;), перестройте его и установите приложение.
Сначала, когда я это читаю, я нахожу это неуместным. Но на самом деле это проблема в моем случае. Большое спасибо !!!!!!!!
Святая долбаная трата времени, я удалял неиспользуемые ресурсы и несколько классов, думая, что Dagger уловит недостающие зависимости, ошибка NOPE DataBinding внезапно. 20 секунд перебора Кинжала после 2 часов восстановления / чистки и поиска.
В моем случае у меня неправильный возврат для моего метода запроса.
В моем случае эта проблема была вызвана тем, что в классе 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
спасибо за сообщение ... Я также столкнулся с этой проблемой, но я использовал строку для первичного ключа, которая вызывает проблему
в моем случае проблема была связана с частным модификатором для метода onclick, назначенным с помощью масляного ножа, убедитесь, что все поля и методы, назначенные с помощью масляного ножа, являются общедоступными
В моем случае это была проблема с версией Dagger 2. 2.17 и выше (последняя версия на сегодняшний день - 2.20) не работала. Возврат к версии 2.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 ..., но сборка больше не терпит неудачу и не сообщает об ошибках или предупреждениях.
Да, это шанс
Я использую в своем проекте Kotlin + dagger + data binding. Этот подход должен работать независимо от версии dagger2.
Что я сделал, чтобы исправить свою проблему:
сделал android.databinding.enableV2=false в файле gradle.properties и очистил и перестроил
смог увидеть фактическую ошибку, связанную с неправильным прицелом dagger2
Исправлен мой график кинжала и другие операторы импорта
установить обратно на android.databinding.enableV2=true
Тоже наткнулся на это и блин, отстой, когда такое случается. Честно говоря, я бы пошел двумя путями:
поскольку привязка не полностью сгенерирована, вы можете не добраться до интересных ошибок сборки (например, комната пытается сгенерировать ее шаблон), поэтому вам следует увеличить флаг -Xmaxerrs для максимального количества отображаемых ошибок
в моем случае меня вдохновило переключиться на другую версию плагина Android Studio и Gradle (в бета-канале AS 3.4 я получил фактические ошибки сборки)
если вы используете библиотеку сохраняемости комнаты, проверьте еще раз ее код. У меня была такая же проблема, и, посмотрев мой код, я увидел. Этот вопрос о сохранении комнаты ..
Ну наконец то .. Я использую библиотеку Room Persistence, я проверил весь свой код и нашел. Проверьте класс модели вашей комнаты.
У меня такая же проблема. И я не могу построить свой проект. Компилятор сообщает, что не может найти символ com.mypackage.example.databinding.MyActivityBinding