Java 尝试进行双向绑定会导致;不能反转错误“;

Java 尝试进行双向绑定会导致;不能反转错误“;,java,android,data-binding,Java,Android,Data Binding,嗨,我想做一个双向绑定。我试图在XML文件中绑定到的属性是 android:visibility="@={chart.ShowProgress ? View.VISIBLE : View.GONE}" 在文件ChartViewModel文件中: private int mShowProgress = View.GONE; public int getShowProgress() { if (mColor.colorId == mColorId) { return mS

嗨,我想做一个双向绑定。我试图在XML文件中绑定到的属性是

android:visibility="@={chart.ShowProgress ? View.VISIBLE : View.GONE}"
在文件ChartViewModel文件中:

private int mShowProgress = View.GONE;

public int getShowProgress() {
    if (mColor.colorId == mColorId) {
        return mShowProgress;
    }
    mShowProgress = View.GONE;
    return mShowProgress;
}

public void setShowProgress(@NonNull int isProgressVisible) {
    this.mShowProgress = isProgressVisible;
}
然而,当我尝试构建时,我得到了一个错误

The expression '((chartShowProgress) ? (android.view.View.VISIBLE) : 
(android.view.View.GONE))' cannot be inverted, so it cannot be used in a two-way binding

Details: The condition of a ternary operator must be constant: 
android.databinding.tool.writer.KCode@18e15570

有人能指出我做错了什么吗?谢谢

我试图重现这个问题,您出现此错误的原因是您试图使用三元表达式的双向数据绑定

android:visibility="@={chart.ShowProgress ? View.VISIBLE : View.GONE}"
这是看到此错误的正常行为,因为双向数据绑定的目的不仅是将值从java映射到XML布局,而且还将它们从XML映射回java中的存储。因此,根据您的表达式,您需要将布尔值
图表的值映射到某个小部件的可见性;但是,如何将XML映射回java(如何使用这个三元表达式将小部件的可见性映射回java
chart.ShowProgress?View.VISIBLE:View.GONE
)。答案是使用双向数据绑定无法做到这一点,这就是引发此异常的原因

因此,要解决您的问题,您需要从表达式中删除等号,因此它应该是:

android:visibility="@{chart.ShowProgress ? View.VISIBLE : View.GONE}"

您好,您在布局中导入了
视图
类了吗?您好@Zain,是的。我已经实现了一个CharViewModel类。我已经更新了我的问题以包含此信息。对不起,我的意思是将此
包装到
标记中。对不起,我误解了。是的。我在侧面布局中导入了它。我看不到@BindingAdapter注释。你能提供它吗?你能帮我做这个吗:谢谢。