2017-04-20 54 views
0

問題

在我的活動,有兩種觀點:。我使用數據綁定來控制其可見性。甲數據綁定錯誤發生在特定的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

我的第一個猜測是你有一個不同的佈局文件,是針對這些設備 - 也許是不同的密度桶,肖像與風景,屏幕尺寸等 –

回答

2

所有值應被設置和獲取到的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