在我的活动中,有两种观点: A 和 B 。我使用数据绑定来控制其可见性。
查看A
android:visibility="@{model.attr==1?View.GONE:View.VISIBLE}”
查看B
android:visibility="@{model.attr!=1?View.VISIBLE:View.GONE}”
然后,我打包了发布 Apk,在 JinLi 和 QiKu Android设备上运行,但发现两个视图的可见性相反:A是不可见的,B是可见的。是的,不要惊讶,A和B逻辑是一样的。
不要太早得出结论我在使用数据绑定时犯了一些错误。让我解释一下更多细节:
问题只发生在上述两个Android设备上。
当我打包调试版本(例如, debug.apk )时,问题就会消失。
当我用B1更改B的可见性声明代码时
android:visibility="@{model.attr==1?View.GONE:View.VISIBLE}”
,问题也消失了。
JinLi 和 QiKu 出错,其他人工作正常。
release.apk 出错, debug.apk 工作正常。
android:visibility="@{model.attr!=1?View.VISIBLE:View.GONE}”
出错,android:visibility="@{model.attr==1?View.GONE:View.VISIBLE}”
工作正常。
问题太奇怪了,我已经试过几天了。有没有人遇到过这样的问题?任何建议将不胜感激。
答案 0 :(得分:2)
所有值都应设置并仅获取By Java Class,最好只在xml中验证
XML文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelayout"
android:layout_width="@dimen/rides_relative_size"
android:layout_height="@dimen/rides_relative_size"
android:layout_gravity="center"
android:visibility="@{emptyCheck.isIsemptyview? View.VISIBLE: View.GONE}">
</RelativeLayout>
在Java类中设置和获取值:
public class EmptyView extends BaseObservable {
/**
* The isEmptyView list check if it true or false by using get Ride Offered list
*/
boolean isemptyview = false;
/**
* Gets {@see #isemptyview}.
*
* @return {@link #isemptyview}
*/
@Bindable
public boolean isIsemptyview() {
return isemptyview;
}
/**
* Sets {@see #isemptyview}
*
* @param isemptyview (@link #isemptyview}
*/
public void setIsemptyview(boolean isemptyview) {
this.isemptyview = isemptyview;
notifyPropertyChanged(BR.isemptyview);
}
}
注意:某些设备在条件检查时不接受xml中的直接值