Я разрабатываю приложение со связыванием данных и MVVM.
Я пытаюсь использовать альтернативный макет для своего приложения в ландшафтном режиме. У меня есть:
layout/fragment_content.xml
layout-land/fragment_content.xml
Оба макета имеют одинаковые виды с разным взглядом и получают каналы с одинаковых моделей просмотров, например:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data class="MyBinding">
<variable
name="viewModel"
type="com.myapp.package.viewModel.VMFirst"/>
<variable
name="controlModel"
type="com.myapp.package.viewModel.VMSecond"/>
</data>
<DIFFERENT CONTENT HERE>
Все представления и id существуют в обоих макетах.
Ну, проблема в том, что она не компилируется, ошибка просто "cannot find symbol method getViewModel"
и getter для другой переменной.
То, что я пробовал до сих пор:
-
Использование макетов и макетов топологии (Failed, ошибка объясняется выше)
-
Использование псевдонимов компоновки Использовать псевдонимы макета, которые я нашел здесь Проблема 199344: привязка данных не работает с макетом псевдонимы. При этом я ничего не менял в xml файлах. Это также не удалось, ошибка
Could not write to com.myapp.package.databinding.MyBinding
Нельзя ли использовать привязку привязки данных к тегу data
в нескольких файлах макета? Что я должен использовать для использования разных макетов для разных состояний при использовании привязки данных? Спасибо!
Изменить: удаление class="MyBinding"
не изменило ошибок.