Fehler: Ausführung für Aufgabe „:app:dataBindingProcessLayoutsDevDebug“ fehlgeschlagen. org.xml.sax.SAXParseException; systemId: file:/Users/path/app/build/intermediates/res/merged/dev/debug/layout/fragment_space.xml; Zeilennummer: 106; Spaltennummer: 89; Der Entity-Name muss unmittelbar nach dem ‘&’ in der Entity-Referenz folgen.
und roter Hervorhebungsfehler in Android Studio “unmaskiertes & oder nicht beendetes Zeichen”.
Also wie soll ich das beheben?
Bearbeiten:
Wenn Sie die Antwort gefunden haben, muss dieses Zeichen maskiert werden:
'&' --> '&'
'<' --> '<'
'>' --> '>'
Mir ist aufgefallen, dass ich “>” und “<" in Layout-XML-Dateien verwenden kann.
– Hong
6. Juli 2019 um 22:28 Uhr
Leo unterstützt Monica Cellio
&& sollte gerendert werden als &&.
Das offizielle Anleitung zur Datenbindung enthält Beispiele für Vergleichsoperatoren, bei denen diese XML-Entitäten beispielsweise verwendet werden
Die Beispielausdrücke, die ich in der Antwort erwähnt habe, sind seit dem Schreiben dieser Antwort aus der englischen Version der Dokumentation verschwunden. Sie überleben in einigen veralteten nicht-englischen Versionen der Dokumente wie der spanischen Version.
In jedem Fall ist die ursprüngliche Antwort immer noch gültig, da die Verwendung von XML-Entitäten in XML Standard in XML ist und nichts mit Android selbst zu tun hat.
Verwenden Sie keine Domänenlogik in Bindungsausdrücken, dafür haben Sie Voreinstellungen/Controller.
– artkönig
9. Juni 2017 um 20:37 Uhr
@ArtjomKönig was ist, wenn Sie einige Steuerelemente in der Benutzeroberfläche ausblenden/anzeigen müssen? Ich verwende die Datenbindungsbibliothek, um keinen UI-Code zu schreiben
– Krustig
18. Januar 2018 um 15:07 Uhr
@Krusty Implementieren Sie eine Methode isMyControlVisible() in Ihrem Presenter, wo Sie Ihre Domänenlogik verwenden, um wahr oder falsch zurückzugeben. Binden Sie an diese Methode.
– artkönig
18. Januar 2018 um 15:23 Uhr
Ich denke, wenn Sie zu viele boolesche Variablen haben, ist diese Lösung in Ordnung. Andernfalls hätte Ihr Code reichlich ObservableBoolean.set
– Lester
26. Februar 2018 um 9:58 Uhr
@artkoenig dann müssten Sie diese zusätzlichen booleschen Werte überall dort beibehalten, wo Sie auf das Layout verweisen. Fehlerquelle.
– Ali Kasi
18. Januar 2019 um 1:29 Uhr
Khemraj Sharma
Liste von HTML-Entitäten
Sie können nicht verwenden & oder etwas anderes HTML-Entität im XML-Format. Sie müssen also Fluchtzeichen verwenden.
Hier ist eine vollständige Liste von HTML-Entitäten.
Es ist eine sehr schlechte Lösung, && im Layout-Markup zu maskieren. Es ist besser, eine Methode auf dem (Ansichts-)Modellobjekt zu erstellen:
android:visibility="@{user.adult ? View.VISIBLE : View.GONE}"
public boolean isAdult() {
return age >= 18;
}
Dies ist zwar eine gute Lösung, wird aber leider nicht aufgerufen, wenn sich der Variablenwert ändert (notifyPropertyChanged), und die Sichtbarkeit wird nicht aktualisiert.
– Bernd Kampl
22. Dezember 2016 um 11:20 Uhr
@BerndKampl Verwenden ObservableBoolean isAdult
– S1ngoooor
4. Januar 2017 um 4:42 Uhr
Das wird nicht funktionieren, es wird nur einmal aufgerufen!
– CodierungTT
28. Februar 2018 um 1:30 Uhr
@BerndKampl wie man es benutzt, es wird noch einmal aufgerufen
– CodierungTT
28. Februar 2018 um 1:31 Uhr
@CodingTT Schauen Sie sich meine Antwort an, Sie benötigen irgendwo einen NotifyPropertyChanged-Aufruf, um ihn zu aktualisieren.
– Bernd Kampl
7. März 2018 um 7:17 Uhr
Die beste Lösung, die ich für dieses Problem finden konnte, war die Einführung einer neuen Bindable-Methode.
Mir ist aufgefallen, dass ich “>” und “<" in Layout-XML-Dateien verwenden kann.
– Hong
6. Juli 2019 um 22:28 Uhr