甲数据绑定错误发生在特定的Android装置

问题描述:

问题

在我的活动,有两种观点:。我使用数据绑定来控制其可见性。甲数据绑定错误发生在特定的Android装置


android:visibility="@{model.attr==1?View.GONE:View.VISIBLE}”

视图B

android:visibility="@{model.attr!=1?View.VISIBLE:View.GONE}”

然后,我收拾了发布 APK,跑它金利道奇酷 Android设备,但是发现两个视图的可见性是相反的:A是不可见的,B是可见的。是的,不要惊讶,A和B逻辑是一样的。

提示

不要来得太早得出结论,我让使用数据绑定的一些错误。让我来解释一些更多细节:

  • 这个问题只发生在上面两个android设备上。

  • 当我打包调试版本(例如,debug.apk)时,问题消失。

  • 当我更改B的可见性声明代码为
    android:visibility="@{model.attr==1?View.GONE:View.VISIBLE}”时,问题也消失了。

总之

  • 金利道奇酷出了问题,其他工作正常。

  • release.apk出错,debug.apk工作正常。

  • android:visibility="@{model.attr!=1?View.VISIBLE:View.GONE}”出错,android:visibility="@{model.attr==1?View.GONE:View.VISIBLE}”工作正常。

这个问题很奇怪,我试了几天。有人遇到过这样的问题吗?任何建议将不胜感激。

+1

你应该GI有些设备不接受XML的直接价值ve attr in model class。,在模型类中使用attr字段作为布尔值,并检查xml布局@ {model.attr?View.GONE:View.VISIBLE} – Keerthivasan

+0

我的第一个猜测是你有一个不同的布局文件,是针对这些设备 - 也许是不同的密度桶,肖像与风景,屏幕尺寸等 –

所有值应被设置和获取到的Java类而已,这是很好的验证,只有在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); 
    } 
} 

注意:在条件检查

+0

嗨Keerthivasan,我很感激你提供一个正式的方式来使用条件检查数据绑定和目前的条件检查是不可接受的在一些特殊设备。现在唯一让我困惑的是为什么** release.apk **出错,** debug.apk **工作正常。你能提出一些更多的建议吗? – xiangxing