DataBinding с настраиваемым атрибутом не работает - PullRequest
0 голосов
/ 20 июня 2020

Вопрос

Я создал настраиваемый TextInputLayout вот так:

class CustomTextInputLayout @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : TextInputLayout(context, attrs, defStyleAttr) {

    init {
        val a = context.obtainStyledAttributes(
            attrs, R.styleable.CustomTextInputLayout, defStyleAttr, 0)
        val error = a.getString(R.styleable.CustomTextInputLayout_errorText)
        setError(error)
        a.recycle()
    }
}

Он просто добавляет errorText настраиваемый атрибут, а затем вызывает метод setError() и передает текст, который был установлен в xml, поэтому в файле xml я могу написать что-то вроде этого:

 <variable
    name="bindings"
    type="com.feature.account.ui.features.account.AccountBindings" />

 <com.kasa.library.design.CustomTextInputLayout
    ...
    app:errorText="@{bindings.error.firstNameError}"
    ... 
/>
                   

Кроме того, я создал класс, в котором я сохраняю свои привязки logi c как это

class AccountBindings {

    val error = Error()

    data class Error(
        var firstNameError: String? = null
    )
}

Ошибка

Итак, теперь, когда я пытаюсь собрать свой проект, я получаю сообщение об ошибке:

DataBinderMapperImpl.java:10: error: cannot find symbol
import com.feature.account.databinding.AccountFragmentAccountBindingImpl;
                          ^
  symbol:   class AccountFragmentAccountBindingImpl
  location: package com.feature.account.databinding

Я пробовал

  1. Я попытался сделать недействительным Cach of Android studio
  2. Я попытался аннотировать с помощью @Bindable firstNameError
  3. Я попытался сделать класс AccountBindings наблюдаемым

но ничего не помогает, помогите пожалуйста

...