Intereting Posts
Эффект размытия, как в приложении Etsy? Использование пользовательского поведения для создания нескольких «опорных точек» / позиций для CollapsingToolbar Как заблокировать / разблокировать экран с помощью режима Pattern / Password в Android? Какую среду мобильного программирования вы рекомендуете для запуска? Android 5.0: как изменить цвет названия последних приложений? Android: LayoutParams для TextView делает вид исчезающим, программным Отзывчивый веб-сайт показывает на веб-представление из мобильной ширины (не реагирует) другим способом в Chrome выглядит хорошо Phonegap – Сохранить изображение с URL-адреса в галерее устройств Как уменьшить размер файла изображения перед загрузкой на сервер NumberFormatException для действительного числа String Проблема обнаружения столкновений на основе пикселов с OpenGLES 2.0 под Android Преобразование приложений iPhone / iPad на Android Страница запуска приложений Android Моно для iOS / Android Open или Closed? Платные или бесплатные? Ошибка Android раздувания класса SwipeRefreshLayout

Привязка данных Android с использованием тега include

Обновить примечание:

Вышеприведенный пример работает правильно , потому что выпуск 1.0-rc4 исправил проблему необходимости ненужной переменной.

Оригинальный вопрос:

Я делаю точно так, как описано в документации, и это не работает:

main.xml:

<layout xmlns:andr... <data> </data> <include layout="@layout/buttons"></include> .... 

buttons.xml:

 <layout xmlns:andr...> <data> </data> <Button android:id="@+id/button" ...." /> 

MyActivity.java:

  ... binding = DataBindingUtil.inflate... binding.button; ->cannot resolve symbol 'button' 

Как получить кнопку?

Solutions Collecting From Web of "Привязка данных Android с использованием тега include"

Проблема в том, что включенная компоновка не рассматривается как привязанная к данным макет. Чтобы заставить его действовать как единое целое, вам необходимо передать переменную:

buttons.xml:

 <layout xmlns:andr...> <data> <variable name="foo" type="int"/> </data> <Button android:id="@+id/button" ...." /> 

main.xml:

 <layout xmlns:andr... ... <include layout="@layout/buttons" android:id="@+id/buttons" app:foo="@{1}"/> .... 

Затем вы можете обращаться к кнопкам косвенно через поле кнопок:

 MainBinding binding = MainBinding.inflate(getLayoutInflater()); binding.buttons.button 

Начиная с 1.0-rc4 (только что выпущенный) вам больше не нужна переменная. Вы можете упростить его:

buttons.xml:

 <layout xmlns:andr...> <Button android:id="@+id/button" ...." /> 

main.xml:

 <layout xmlns:andr... ... <include layout="@layout/buttons" android:id="@+id/buttons"/> .... 

Другая интересная вещь в этом состоит в том, что вы можете переменные pas импортировать макет из связки следующим образом:

MainBinding binding = MainBinding.inflate(getLayoutInflater()); binding.buttons.setVariable(BR.varID, variable)