Nota de actualización:
El ejemplo anterior funciona correctamente , porque la versión 1.0-rc4 solucionó el problema de necesitar la variable innecesaria.
Pregunta original:
Hago exactamente como se describe en la documentación y no funciona:
main.xml:
<layout xmlns:andr...
<data>
</data>
<include layout="@layout/buttons"></include>
....
botones.xml:
<layout xmlns:andr...>
<data>
</data>
<Button
android:id="@+id/button"
...." />
MyActivity.java:
... binding = DataBindingUtil.inflate...
binding.button; ->cannot resolve symbol 'button'
como conseguir el boton?
java
android
data-binding
android-button
android-databinding
Kamil Nekanowicz
fuente
fuente
<include layout="@layout/buttons" android:id="@+id/buttons"/>
. Aún necesita la identificación para que produzca un campo público para que pueda acceder a la Vista de botones.binding.{id of include tag}.button
lugar debinding.button
. Me tomó un tiempo resolverlo.Ejemplo fácil y completo
Este ejemplo ayuda a pasar un valor
<include
y acceder a las vistas incluidas en el código.Paso 1
Tienes
layout_common.xml
, quieres pasarString
al diseño incluido.Va a crear
String
variable en el diseño y se refieren esteString
aTextView
.Paso 2
Incluya este diseño en el diseño principal. Dar un
id
diseño incluido para que podamos usarlo en la clase de enlace. Ahora puede pasar StringpassedText
a su<include
etiqueta.activity_main.xml
binding.includedLayout.textView
en tu clase.Puede pasar cualquier variable al diseño incluido como el anterior.
Nota Ambos diseños (padre e incluido) deben estar
binding layout
envueltos con<layout
fuente
binding.includedLayout.button.setOnClickListener
sería la alternativa, pero ¿qué pasa si quiero usar elonClick
atributo en XML? sí mismo ?OnClickListener
al diseño incluido. incluso puedes pasar cualquier cosa en la encuadernación. Marque esta respuesta, si necesita más ayuda, hágamelo saber. stackoverflow.com/a/51722829/6891563passedText
. La única diferencia es que no incluyo el código MainActivity porque solo quiero pasar el recurso de cadena en <include> y dejarlo así. ¿Por qué siempre está en blanco?Otra cosa interesante sobre esto es que puede pasar variables al diseño importado desde el cuaderno de esta manera:
fuente
Puede hacer que su enlace funcione en su inclusión simplemente agregando una ID así:
fuente
solo establece una identificación para tu diseño de inclusión
luego
BUTTONSBINDING
es res / layout / buttons.xmlahora :
fuente