Не удается найти получатель для атрибута "Android: проверено" - PullRequest
0 голосов
/ 06 декабря 2018

ошибка привязки данных **** msg: Не удается найти метод получения атрибута 'android: флажок' с типом значения java.lang.Boolean для android.widget.CheckedTextView.

У меня есть приложение Kotlin для Android, и один из макетов XML содержит CheckedTextView, и я хочу двухсторонне связать свойство selected со значением checkMed ViewModel.Идея состоит в том, что свойство selected в viewModel будет представлять свойство в самом представлении.Это не с сообщением об ошибке выше.Теперь мне интересно, так ли это, потому что флажок проверен как логическое значение, а метод получения называется isChecked.Может ли Databinding не распознать это?Поэтому я попытался расширить его с помощью функции getChecked, но это не помогло устранить ошибку.Возможно, потому что, хотя Kotlin поддерживает функции расширения, Java - нет.Любые идеи, как это можно решить?

XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="viewModel"
            type="lehrbaum.de.onenightcomps.view.SimpleCheckableListItemViewModel"/>
    </data>
    <CheckedTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:padding="@dimen/text_margin"
        android:gravity="center_vertical"
        android:textStyle="bold"
        android:checkMark="?android:attr/listChoiceIndicatorSingle"
        android:checkMarkTint="@color/colorPrimary"
        android:checked="@={viewModel.checked}"
        android:text="@{viewModel.text}"/>
</layout>

Класс ViewModel:

class SimpleCheckableListItemViewModel {
    val checked : MutableLiveData<Boolean> = MutableLiveData()
    val text : MutableLiveData<String> = MutableLiveData()
}

Функция расширения:

fun CheckedTextView.getChecked(): Boolean {
    return this.isChecked
}

1 Ответ

0 голосов
/ 10 декабря 2018

Возможны разные причины этой ошибки, но в моем случае проблема возникла из-за того, что я не добавил плагин apply: 'kotlin-kapt' и применил плагин: 'kotlin-android-extensions' в моем Gradle.

После добавления этих плагинов вы должны заменить свои аннотационные процессоры на kapt.

После этого все может пойти хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...