Я в основном застрял в привязке к данным по привязке к андроиду. Существует единственный файл activity.xml, но только сгенерированный класс привязки, показывающий ошибку. Пожалуйста, дайте мне знать, как решить эту проблему.
Дублирующий класс, найденный в файле '/activity_login.xml' DataBinding, BR не создается
Ответ 1
Пользовательское имя класса привязки разрешило мою проблему
<data class="ContactItem">
…
</data>
Ответ 2
Если вы используете Room ORM, проверьте свой DAO clazz
Пример:
@Update 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
Ответ 3
Я бы это сделал, добавив android.databinding.enableV2 = true в свойствах Gradle. Он работал нормально.
Ответ 4
Если вы используете Room ORM, просмотрите их, если вы недавно изменили некоторые. Любая проблема при анализе SQL
запросов, а также возвращаемый тип метода, который должен полностью соответствовать результату запроса, может повлиять на привязку данных и показать ненормальные ошибки.
У меня была похожая проблема:
@Query("SELECT * from NotSellingReason where NotSellReasonId > 0")
List<ReasonModel> getUnvisitingReasons();
У меня был неправильный общий тип. Я должен использовать ReasonEntity
вместо ReasonModel
и для его получения требуется много времени!
Еще одна проблема, которая может привести к сбою привязки данных, - о Dagger DI. Если вы используете DI в своем проекте, убедитесь, что все введенные классы,... предоставляются или связаны кинжалом.
Ответ 5
В моем случае это была проблема с версией Dagger 2. 2.17 и выше (последняя версия на сегодня - 2.20) не работала. Переход на 2.16 решил проблему для меня.
Больше обсуждений об этом здесь
Ответ 6
Вы можете получить эту ошибку, когда включите макет в XML.
<include layout="@layout/any_layout" />
чтобы включить другой макет в ваш XML, следуйте этой fooobar.com/questions/259635/...
Ответ 7
У меня была та же проблема, и это было потому, что у меня была ссылка на переменную неизвестного класса
<variable name="handler" type="com.example.org.UnknownClass" />
Мне просто пришлось исправить эту ошибку.
Ответ 8
В моем случае эта проблема была вызвана тем фактом, что в классе Entity Room ORM имена setter и getter частного поля не совпадали с соглашением об именах java bean.
Ответ 9
В моем случае это происходило, потому что я изменил List
на ArrayList
; Проблема устранена, когда она вернулась к List
;
@Query("SELECT * FROM " + PurchaseConstants.TABLE_NAME + " ORDER BY purchaseTime DESC")
List<Purchase> getAllPurchases();
Ответ 10
У меня такая же проблема. В моем случае я использовал Room, и я не писал метод setter в классе Entity
. Поэтому вы также проверяете свое дело.
Ответ 11
в моем случае проблема была из-за закрытого модификатора для метода onclick, назначенного с помощью butterknife, убедитесь, что все поля и методы, назначенные с помощью butterknife, являются общедоступными
Ответ 12
В моем случае проблема заключалась в том, что ARouter не очень хорошо поддерживает kotlin - когда я использую аннотацию @Autowired, сборка завершилась неудачно, и подсказки dataBinding не найдены, дубликат класса найден в
файл ActivityLoginBinding。 Затем добавьте @JvmField перед @Autowired , Он работает и успешно работает。
поэтому , когда вы используете AndroidStuido, конвертируйте Java в Kotlin , Будьте осторожны generated Файлы 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));
}
когда использовать это в kotlin, как это:
//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))
}
}
Я надеюсь, что этот ответ отвечает на ваш вопрос. Мой английский очень плохой! ^ ^
Ответ 13
Я получил 37 из этих повторяющихся ошибок, и все это было из-за неправильного импорта в 1 файле макета
<import type="android.view.View"/>
<variable
name="viewModel"
type="wrong.package.name.SViewModel"/>
Я нашел его, открыв все мои файлы макета XML и проверив его вручную. Сама ошибка была совершенно не связана, так как она по-прежнему существует, если я вручную перехожу в /build/generate/data_binding..., но сборка больше не дает сбоя, и нет сообщений, ошибок или предупреждений.
Ответ 14
Я использую Kotlin + Dagger + привязку данных в моем проекте. Этот подход должен работать независимо от версии dagger2.
Что я сделал, чтобы исправить мою проблему:
-
made
android.databinding.enableV2=false
в файле gradle.properties и очистить и восстановить -
удалось увидеть фактическую ошибку, связанную с неверной областью действия dagger2
-
Исправлен мой график кинжала и другие операторы импорта
-
установить обратно в
android.databinding.enableV2=true
Ответ 15
для меня заменил kapt на annotationProcessor работал
annotationProcessor "com.android.databinding:compiler:3.1.3"
Ответ 16
Есть много причин для этой проблемы. Вы можете попробовать эту команду. работал:)
gradlew build
Ответ 17
О, эта ошибка настолько плохая и трудно найти решение... Мое решение было в классе Entity
. должен установить var
вместо val
для Feilds и быть решенным, наконец :)
Ответ 18
Тоже наткнулся на это и блин, это отстой, когда это происходит. Честно говоря, я бы пошел этими двумя путями:
-
поскольку привязка сгенерирована не полностью, вы можете не попасть к интересным ошибкам сборки (например, к комнате, пытающейся сгенерировать ее в качестве примера), поэтому вам следует увеличить флаг -Xmaxerrs для максимального количества отображаемых ошибок
-
в моем случае пришло вдохновение перейти на другую версию плагина Android Studio и Gradle (в AS 3.4, бета-канал, я получил реальные ошибки сборки)
Ответ 19
если вы используете библиотеку постоянства помещения, проверьте еще раз код. Я получил ту же проблему и после просмотра моего кода, и я увидел. Этот вопрос о стойкости комнаты.
Наконец... Я использую библиотеку Room Persistence, я проверяю весь код и нашел. Проверьте свой класс модели комнаты.