Привязка данных завершается с ошибкой «не могу угадать» - PullRequest
0 голосов
/ 25 сентября 2018

После обновления до Android Studio 3.2.0 я сталкиваюсь со следующей проблемой:

Не удалось выполнить задачу ': mobile: dataBindingGenBaseClassesDebug'.

> не удалось создатьпредположение для com.ACME.database.model.Order

также видел этот ответ , который намекает на то, что «имена пакетов должны начинаться со строчной буквы».

... это похоже на то, как если бы это назначение variable было бы причиной:

<data class=".databinding.OrderFragmentBinding">
    <variable name="order" type="com.ACME.database.model.Order"/>
    ...
</data>

найдено: Новый компилятор привязки данных для классов привязки , которыйне объясняет изменения в поведении.

Q : на такие назначения также влияет соглашение об именовании?Я имею в виду, есть ли шанс (помимо изменения имени пакета в верхнем регистре) заставить эту привязку данных v2 "догадаться"?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

эти настройки в gradle.properties включают компилятор привязки данных androidx:

android.databinding.enableV2 = false
android.enableExperimentalFeatureDatabinding = true

это можно увидеть по выбранному пакету:

Download https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.pom
Download https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.jar

и егожалуется:

WARNING: The option setting 'android.databinding.enableV2=false' is experimental and unsupported.
The current default is 'true'

WARNING: The option setting 'android.enableExperimentalFeatureDatabinding=true' is experimental and unsupported.
The current default is 'false'

скорее всего потребуется androidx.fragment.app.Fragment вместо android.support.v4.app.Fragment, чтобы связать данные Fragment с компилятором привязки данных по умолчанию v2.это также просто временное решение, но все же лучше, чем возвращаться к компилятору привязки данных v1.


Я недавно заметил, что это работает лучше всего, если не добавлять имя в <data/> тег.Сгенерированные имена всегда имеют заглавную первую букву, а все остальные строчные.

0 голосов
/ 12 июня 2019

Была похожая проблема.Решается путем переименования класса данных, начиная с заглавных букв.

0 голосов
/ 25 сентября 2018

То же самое происходит со мной после обновления до 3.2 (работающее приложение перед миграцией, и без изменения кода) ... тогда возникает проблема с догадкой, даже если у меня есть строчные буквы в первых буквах имени пакета!

<data>
   ...
   <variable name="rule" type="com.gta.viewmodels.vmRule"/>
   ...
</data>

Так что я «думаю», что ваша проблема все равно останется даже после того, как вы обновите имя пакета (что в любом случае рекомендуется, если проблемы появляются каждые один раз, когда я обновляю Android Studio!).

В любом случае, я решил, понизив привязку данных v2 в gradle.properties (вы получите предупреждение «неподдерживаемый», но просто проигнорируете его):

android.databinding.enableV2=false

Похоже, Android Studio PG не так хорошо проверила это утверждение ( здесь ):

Data Binding V2 is now enabled by default and is compatible with V1.

...