1. ホーム
  2. android

[解決済み] アンドロイドで"&&"論理演算子を使用したデータバインディング

2022-04-25 02:40:34

質問

Androidのデータバインディングを使用して、xmlでand "&"演算子を使おうとしています。

android:visibility="@{(bean.currentSpaceId == bean.selectedSpaceId **&&** bean.currentSpaceId > 0)? View.VISIBLE: View.GONE}"

が、コンパイルエラーになりました。

Error:Execution failed for task ':app:dataBindingProcessLayoutsDevDebug'. org.xml.sax.SAXParseException; systemId: file:/Users/path/app/build/intermediates/res/merged/dev/debug/layout/fragment_space.xml; lineNumber: 106; columnNumber: 89; entity reference の '&' に続けて、すぐに entity name が必要です。

and red highlight error in android studio "unescaped & or non terminated character".

では、どのように修正すればいいのでしょうか?

編集してください。 という文字があり、この文字はエスケープする必要があることがわかりました。

'&' --> '&'

'<' --> '&lt;'

'>' --> '&gt;'

解決方法は?

&& は、次のようにレンダリングされます。 &amp;&amp; .

公式の データバインディングガイド は、これらの XML エンティティが使用される比較演算子の例を示しています。

android:visibility="@{age &lt; 13 ? View.GONE : View.VISIBLE}"

編集

この回答が書かれた後、回答で述べた例の表現が英語版のドキュメントから消えてしまいました。スペイン語版のような英語版以外の古いドキュメントには残っています。

いずれにせよ、XMLでXMLエンティティを使用することはXMLの標準であり、Android自体とは関係ないため、元の回答はまだ有効です。