#android #android-studio #data-binding
#Android #android-studio #привязка данных
Вопрос:
Иногда, когда в XML используется тег, привязка, созданная для родительского макета, не содержит ссылки на привязку включенного макета. Вместо этого включенный макет рассматривается как представление. Это влияет только на Android Studio (и, следовательно, на автозаполнение), но когда вы переходите к сборке проекта, он строится правильно со ссылкой на привязку для включенного макета. Похоже, это влияет только на некоторые файлы в проекте.
Например, если макет A содержит макет X и макет Y, он может иметь привязку к макету X, в то время как макет Y рассматривается как представление. В таком случае каждый файл в проекте не сможет увидеть привязку для Layout Y.
Похоже, что не существует шаблона, для которого файлы страдают от этого. Если я вручную удалю папку cache ~/User / Library / Caches / Google/ AndroidStudio4.1, проблема, как правило, возникает для другого набора файлов.
Активность:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".feature.sidemenu.AboutActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@ id/toolbar"
layout="@layout/appbar_toolbar" />
<include
android:id="@ id/about_layout"
layout="@layout/fragment_about" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Панель инструментов:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@ id/toolbarText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/elements_spacing"
android:text="Toolbar"
android:textSize="@dimen/text_size_medium" />
</layout>
О нас:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@ id/aboutText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/elements_spacing"
android:text="About"
android:textSize="@dimen/text_size_medium" />
</layout>
и код kotlin:
binding.aboutLayout.apply {
aboutText.text = "" // I get error here (when I compile everything works)
}
binding.toolbar.apply {
toolbarText.text = "" // But not here
}