Я пытаюсь использовать тег <include>
с привязкой данных для повторного использования одного общего макета.
Каждый повторно использованный макет должен устанавливать разные метки.
Чтобы достичь этого, я пытаюсь передать это значение в качестве параметра привязки данных (bind: test).
Проблема возникает, когда я пытаюсь использовать переменную, полученную от родителя xml (sync_fragment. xml) во включенном xml (sync_row. xml).
В строке "android:text='@{test}"
, Android studio xml синтаксис подчеркивает 'test' и говорит: "Не удается найти идентификатор" test "".
Единственное, что отличается от документов i сделано не проверять Android Поддержка от Android SDK menù в Android Studio (потому что у меня нет этой записи в списке!).
Как я могу решить эту проблему?
Спасибо .
Android Версия Studio: 3.6.1
Версия Gradle: 5.6.4
Файл: sync_fragment. xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="12">
<include
android:id="@+id/includedLayout1"
layout="@layout/sync_row"
bind:test='@{"TEST_DATA_BIND1"}' />
<include
android:id="@+id/includedLayout2"
layout="@layout/sync_row"
bind:test='@{"TEST_DATA_BIND2"}' />
<include
android:id="@+id/includedLayout3"
layout="@layout/sync_row"
bind:test='@{"TEST_DATA_BIND3"}' />
</LinearLayout>
</layout>
Файл: sync_row. xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="test" type="String" />
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{test}'/>
</LinearLayout>
</layout>
Файл Gradle:
...
dataBinding {
enabled = true
}
...
РЕДАКТИРОВАТЬ:
Я только что обновил Android Студийная версия до 3.6.2.
Кажется, проблема с красной подсветкой исчезла.
Я все еще не могу напечатать значение во фрагменте, всегда пустую строку!
Я также пытался принудительно вызвать вывод внутри sync_row. xml, настройка напрямую связать: text = '@ {"hello"}'. Не удалось, все еще пустая этикетка напечатана в поле зрения. Версия Gradle: 5.6.4