Java 尝试进行双向绑定会导致;不能反转错误“;
嗨,我想做一个双向绑定。我试图在XML文件中绑定到的属性是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
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(如何使用这个三元表达式将小部件的可见性映射回javachart.ShowProgress?View.VISIBLE:View.GONE
)。答案是使用双向数据绑定无法做到这一点,这就是引发此异常的原因
因此,要解决您的问题,您需要从表达式中删除等号,因此它应该是:
android:visibility="@{chart.ShowProgress ? View.VISIBLE : View.GONE}"
您好,您在布局中导入了视图
类了吗?您好@Zain,是的。我已经实现了一个CharViewModel类。我已经更新了我的问题以包含此信息。对不起,我的意思是将此
包装到
标记中。对不起,我误解了。是的。我在侧面布局中导入了它。我看不到@BindingAdapter注释。你能提供它吗?你能帮我做这个吗:谢谢。