java - 使用包含标签的 Android 数据绑定(bind)

标签 java android data-binding android-button android-databinding

更新说明:

上面的例子正常工作,因为1.0-rc4版本修复了需要不必要变量的问题。

原问题:

我完全按照 documentation 中的描述进行操作它不起作用:

ma​​in.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"
    ...." />

ma​​in.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"
    ...." />

ma​​in.xml:

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

关于java - 使用包含标签的 Android 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32947440/

相关文章:

java - 如何为 java SE 1.5 创建一个半透明(窗口下方的空间应该是可点击的)窗口?

java - 滚动时如何在recyclerview中保持阴影

android - 从 View 中心旋转动画不起作用

使用 Retrofit/OkHttpClient 的 WiFi 上的 Android SocketTimeoutException

Java 应用程序/ArrayList 与直接数据库查询

c# - 为什么在更改 ItemsSource 时 DataGrid 不更新?

WPF ComboBox 不更新源

java - 多个映射到 Spring 中 Controller 的相同方法

java - Joda-Time 字符串到 LocalTime 24 小时等效值

java - 创建对象的数学运算符?