Intereting Posts
Android 3.0 – Как получить ВСЕ контакты через ContactsContract Автоматическое открытие InfoWindow при добавлении маркера Google Maps v2 Android «Не удалось найти исключение класса android.transition.Transition» при нажатии кнопки возврата Регистрация UP / CANCEL из диалогового окна при запуске события DOWN из LongPress View Проблема при использовании пользовательского шрифта – «родной шрифт не может быть создан» Предпочтения в предпочтении в Android-приложении Установка содержимого веб-страницы внутри веб-обозревателя (Android) Утечка памяти с настраиваемым шрифтом для настраиваемого шрифта Android-эквивалент API-интерфейса iOS GCD dispatch_group Отправить сообщение от wearable to phone, а затем немедленно ответить Упреждающий базовый аут с HttpUrlConnection? Как определить, когда пользователь включает / выключает состояние gps? В выставлении счетов не работает после обновления – Google Store Drawable vs. Bitmap Тайм-аут для запроса сервера, сделанный с использованием «Volley» только на Android, а не на iOS

Привязка данных 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)