0

2つのシェイプドローブル、rounded_corners.xmlとrounded_corners_red.xmlは有効なテキスト入力と無効なテキスト入力を表示するために使用されます。ドロアブルのAndroidデータバインド

有効なテキストがrounded_corners.xmlを表示し、無効な場合はrounded_corners_red.xmlが表示されるように、ユーザーがログインボタンをクリックしたときにこのdrwableを動的に設定します。

以下は、私のレイアウトxmlにどのように置いたかです。

<EditText android:id="@+id/et_ip" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@={systemSettings.isValid ? @drawable/rounded_corners : @drawable/rounded_corners_red}" 
android:text="@={systemSettings.serverIP, [email protected]/ip_host}" 
android:textColor="#000000" /> 

私のモデルクラスで定義されたisValid observable変数に基づいてdrawableを動的に適用したいと考えています。 私のコードはエラーなしでコンパイルされます。しかし、実行時エラーが発生する

java.lang.RuntimeException: Found data binding errors. 
****/ data binding error ****msg:The expression ((systemSettingsIsValidGet) ? (getDrawableFromResource(etIp, R.drawable.rounded_corners)) : (getDrawableFromResource(etIp, R.drawable.rounded_corners_red))) cannot cannot be inverted: The condition of a ternary operator must be constant: [email protected] 
file:D:xxx\app\src\main\res\layout\fragment_system_settings.xml 
loc:92:47 - 92:128 
****\ data binding error **** 

これはなぜ起こるのですか?おかげさまで

あなたの文は、2ウェイ @={}

あなたが表現

を反転させることができないことができないというエラーがそれもあなたを与える見つける理由です

@={systemSettings.isValid ? @drawable/rounded_corners : @drawable/rounded_corners_red}` 

を結合さ

+0

そして、gradle consoleのエラーは何ですか? –

+0

@EugenMartynov 9つのエラーと2つの警告で終了したGradleビルド - これらの8つのエラーは、このメインエラーの上でデータバインドが失敗したためです。 –

+0

@ = {}を@ {}に変更します。 –

答えて

2

理由は:

0三項演算子の

条件は

定数でなければなりません。しかし、あなただけの描画可能なリソースを取得しているので、それだけで表現から=を削除するために保存します。

+0

はい。ありがとうございました。 –

関連する問題