Я использую привязку данных в своем проекте, и она работает, как ожидалось.Теперь я хотел бы использовать тег <include>
и поля доступа во включенном макете, и я не могу заставить его работать.
Я попробовал фрагмент кода, который я нашел несколько раз в Интернетеэто следующее:
hello_world.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<include
android:id="@+id/included"
layout="@layout/included_layout"/>
</LinearLayout>
</layout>
includes_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/world"/>
</layout>
HelloWorldBinding binding =
HelloWorldBinding.inflate(getLayoutInflater());
binding.hello.setText("Hello");
binding.included.world.setText("World");
И этот код не работает.Когда я смотрю в Android Studio, binding.included
- это вид, и поэтому нет доступа к полям.
binding.hello.setText("Hello");
Работает правильно, поэтому привязка данных работает, по крайней мере, на каком-то уровне.
Как я могу получить доступ к полям во включенном макете?