java - Android 在 include 标签中找不到 BindingConversion

标签 java android android-layout android-xml android-databinding

我做了一个从 boolean 值到可见性的 BindingConversion,但是 Android 找不到它,但只有当我在 include 标记中使用它时。它适用于 FrameLyout 等其他元素。

在我的抽象 ViewModel 中:

@BindingConversion
public static int convertBooleanToVisibility(boolean visible) {
    return visible ? View.VISIBLE : View.GONE;
}

然后在我的xml中(TestViewModel继承自ViewModel):

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
        <variable
            name="viewModel"
            type="oliveradam.testapp.viewmodels.TestViewModel"/>
    </data>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            app:theme="@style/toolbarStyleMusicView"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:minHeight="?attr/actionBarSize">
        </android.support.v7.widget.Toolbar>
        <include
            android:visibility="@{viewModel.isVisible}"
            layout="@layout/layout_test"
            app:viewModel="@{viewModel}" />
    </LinearLayout>
</layout>

错误:(139, 29) 错误:找不到符号方法 setVisibility(boolean)

我正在开发 Android Studio 2.2 RC。

最佳答案

我不知道为什么这不起作用,但我认为它是 include 中的布局标记。您不能将这些标签用于数据绑定(bind)。所以我删除了包含的内容,使用了 View stub 并以编程方式更改了布局。

关于java - Android 在 include 标签中找不到 BindingConversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39539010/

相关文章:

android - 如何在屏幕底部显示小部件android

Android ListView 数组中的多列

java - 使用 hadoop Map Reduce 的自定义输出格式时未找到类异常

java - 将字符串转换为日期 - Java

android - 图片前面的 Nativescript CSS 文本

java - 无法从包中检索 Paint.Cap 类型的数据

android - Android 应用程序的付费和免费版本

java - Struts2 验证中的短路

java - 使用 Objectify4 持久化 map

java - 如何重复textview?