2017-02-18 20 views
0

У меня есть «int не может быть разыменовано» ошибка при попытке установить флаг с использованием двоичного оператора внутри макета с использованием привязки данных.int не может быть разыменован. Бинарные операторы привязки данных

<layout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/tools"> 

    <data> 
     <variable 
      name="textState" 
      type="java.lang.Integer"/> 
    </data> 
     <android.support.v7.widget.AppCompatCheckBox 
      android:id="@+id/checkbox" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Text" 
      app:paintFlags="@{checkbox.getPaintFlags() | textState.intValue()}"/> 
</layout> 

ответ

0

Этот порядок checkbox.getPaintFlags() | textState.intValue() двоичных операндов интерпретируется как ((int)checkbox).getPaintFlags() и это причина ошибки.

Но! Если ваш инвертированный порядок операндов интерпретируется должным образом. И это работает!

Мне было интересно, когда я узнаю эту функцию