Android 在包含标记中找不到 BindingConversion
Android cannot find BindingConversion in include tag
我做了一个从布尔值到可见性的 BindingConversion,但是 Android 找不到它,但只有当我在包含标记中使用它时才找到它。它适用于其他元素,如 FrameLyout。
在我的抽象视图模型中:
@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 中的布局标记。您不能将这些标签用于数据绑定。所以我删除了包含,使用 viewstub 并以编程方式更改布局。
我做了一个从布尔值到可见性的 BindingConversion,但是 Android 找不到它,但只有当我在包含标记中使用它时才找到它。它适用于其他元素,如 FrameLyout。
在我的抽象视图模型中:
@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 中的布局标记。您不能将这些标签用于数据绑定。所以我删除了包含,使用 viewstub 并以编程方式更改布局。