更新说明:
上面的例子正常工作,因为1.0-rc4版本修复了需要不必要变量的问题。
原问题:
我完全按照 documentation 中的描述进行操作它不起作用:
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'
如何获取按钮?
最佳答案
问题在于包含的布局没有被认为是数据绑定(bind)布局。为了让它充当一个,你需要传递一个变量:
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}"/>
....
那么就可以通过buttons字段间接访问按钮了:
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"/>
....
关于java - 使用包含标签的 Android 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32947440/