Я начал получать ошибки привязки данных после добавления некоторых привязок в макет, которые ссылаются на объекты LiveData из моей модели представления. Я делал это много раз в других макетах, и у меня никогда не было этой проблемы. Ошибка не проливает много света на то, что не так.
Это сообщение об ошибке
CheckoutBindingImpl.java:57: error: cannot find symbol
java.lang.String callbackArg_0 = android.databinding.adapters.TextViewBindingAdapter.getTextString(firstName);
^
symbol: variable databinding
location: variable android of type Button
/home/Droids/vv/sample-app/app/build/generated/source/kapt/stageCheckoutDebug/com/sample/databinding/FragmentCheckoutBindingImpl.java:685: error: cannot find symbol
android.databinding.adapters.TextViewBindingAdapter.setTextWatcher(this.firstName, (android.databinding.adapters.TextViewBindingAdapter.BeforeTextChanged)null, (android.databinding.adapters.TextViewBindingAdapter.OnTextChanged)null, (android.databinding.adapters.TextViewBindingAdapter.AfterTextChanged)null, firstNameandroidTextAttrChanged);
^
symbol: variable databinding
location: variable android of type Button
/home/Droids/vv/sample-app/app/build/generated/source/kapt/stageCheckoutDebug/com/sample/databinding/FragmentCheckoutBindingImpl.java:713: error: cannot find symbol
android.databinding.adapters.TextViewBindingAdapter.setText(this.firstName, viewModelFirstNameGetValue);
^
symbol: variable databinding
location: variable android of type Button
Note: /home/Droids/vv/sample-app/app/build/generated/source/kapt/stageCheckoutDebug/com/sample/injection/DaggerAppComponent.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors
Это часть макета:
<EditText
android:id="@+id/first_name"
style="@style/CheckoutInputField"
android:layout_width="0dp"
android:layout_height="@dimen/checkout_edit_text_height"
android:layout_marginEnd="16dp"
android:layout_marginTop="8dp"
android:inputType="textPersonName"
android:text="@={viewModel.firstName}"
app:layout_constraintEnd_toStartOf="@+id/last_name"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/first_label" />
А это модель представления:
abstract class CheckoutViewModel : ViewModel() {
abstract var cartNavigator: CartNavigator?
abstract val firstName: MutableLiveData<String>
/* other stuff *
}
Реализация модели представления довольно прямолинейна:
class CheckoutViewModelImpl @Inject constructor(
private val schedulerProvider: SchedulerProvider
) : CheckoutViewModel() {
override val firstName = MutableLiveData<String>()
/* other stuff *
}
Это часть автоматически сгенерированного класса, в котором выдается одна из ошибок (строка с android.databinding.adapters):
if ((dirtyFlags & 0x800L) != 0) {
// api target 1
this.android.setOnClickListener(mCallback58);
this.apple.setOnClickListener(mCallback59);
this.back.setOnClickListener(mCallback55);
this.debitCredit.setOnClickListener(mCallback56);
android.databinding.adapters.TextViewBindingAdapter.setTextWatcher(this.firstName, (android.databinding.adapters.TextViewBindingAdapter.BeforeTextChanged)null, (android.databinding.adapters.TextViewBindingAdapter.OnTextChanged)null, (android.databinding.adapters.TextViewBindingAdapter.AfterTextChanged)null, firstNameandroidTextAttrChanged);
this.paypal.setOnClickListener(mCallback57);
}
Вот также скриншот одной из ошибок из автоматически сгенерированного файла:
![Binding error](https://i.stack.imgur.com/sN3MU.png)
Любые предложения о том, что проблема может быть?