Irgendein wichtiger Fehler oder Probleme mit Android Databinding Library? [geschlossen]

8

Kann jemand, der Android-Datenbindungsbibliothek verwendet (com.android.databinding: dataBinder), Kommentare zu dieser Beta-Bibliothek abgeben? Auf der Android-Entwickler-Website heißt es: "Es könnte Fehler enthalten, und es funktioniert möglicherweise nicht für Ihren Anwendungsfall, also verwenden Sie es auf eigene Gefahr.", Also irgendwelche Probleme oder erhebliche Fehler oder Bugs darüber?

    
magirtopcu 16.06.2015, 08:32
quelle

4 Antworten

5

Ich habe in den letzten Wochen mit der Datenbindungsbibliothek herumgespielt und es ist überraschend robust, wenn man bedenkt, dass es die allererste Version ist.

Der einzige Fehler, den ich bisher gefunden habe, hat einen Workaround. Ich werde es unten erklären.

Wenn Sie ein <include> -Tag in Ihrer Databinding-Layout-Datei verwenden (eine Layout-Datei, die jetzt das <layout> -Tag als Root verwendet), generiert der generierte Code eine Bindung für die Eltern-ViewGroup des <include> -Tags.

Beim Aufblasen der Ansicht mit DataBindingUtil stürzt die Anwendung mit einem ab, wenn versucht wird, die ViewGroup aufzulösen. Es scheint ein anderes Verhalten zwischen dem Codegenerator und der Laufzeitbindungslogik zu geben.

Problembeispiel

Hier ist ein Beispiellayout mit dem oben genannten Problem.

%Vor%

Und hier ist das mitgelieferte Layout.

%Vor%

Beim Versuch, DataBindingUtil.setContentView zu verwenden, tritt der folgende Absturz auf.

%Vor%

Lösung (Workaround)

Die temporäre Problemumgehung, die ich gefunden habe, besteht darin, einen Dummy-Wert an die übergeordnete ViewGroup von <include> zu binden. Dadurch kann der Databinder die ViewGroup zur Laufzeit finden und den Absturz vermeiden.

Hier ist ein Beispiel für den Fix in Aktion:

%Vor%

Und hier ist das sehr grundlegende Ansichtsmodell:

%Vor%

Hoffentlich wird dies in Zukunft behoben und diese Problemumgehung wird nicht benötigt!

Bearbeiten

Ich habe ein anderes Problem in Bezug auf benutzerdefinierte Bindungsadapter gefunden, das ich unter Ссылка

    
Robot Monkey 17.06.2015, 00:22
quelle
3

Ich habe einen Fehler in Bezug auf ObservableField gefunden, der hier eingereicht wurde.

>

Laut dem Leitfaden zur Datenbindung kann eine Modellklasse ObservableField-Attribute enthalten, um sie zu behalten Attributdefinitionen kurz. Beispiel aus dem Führer:

%Vor%

Bei Verwendung dieser Klasse werden die Namensattribute in der Klasse BR nicht generiert und die Implementierungsklassen können nicht kompiliert werden, da sie sich auf sie beziehen. Ausnahme: Diese Attribute werden auch als Variablen im Layout-XML definiert, was im Beispiellayout des Handbuchs nicht der Fall ist:

%Vor%

BR.user ist definiert; BR.firstName, BR.lastName und BR.age sind nicht.

Wenn Sie die Benutzerklasse wie folgt ändern, wird das Problem gelöst:

%Vor%

Meiner Meinung nach sollten bei der Verwendung von Observable * -Typen ihre Namen standardmäßig zu BR.java hinzugefügt werden und @Bindable sollte veraltet sein.

Zumindest die Anleitung sollte korrigiert werden, indem Sie dem ObservableField-Beispielcode die @Bindable-Annotation hinzufügen.

Ich habe zwei Tage gebraucht, um dieses Problem zu analysieren und zu beheben.

    
quelle
1

Es unterstützt momentan nicht @style. Zum Beispiel:

%Vor%

Der obige Befehl würde versuchen, einen Standardstil in der Ressource styles zu setzen, wenn getStyle () null liefert. Leider ist dies nicht möglich, würde aber eine sehr mächtige Ergänzung zur Datenbindung imo darstellen.

    
worked 23.08.2015 13:08
quelle
1

Wenn ich das MVVM-Muster mit Data Binding Library auf Android implementiert habe, habe ich mehrere Fehler gefunden. Einige von ihnen wurden bereits hier erwähnt. Obwohl ich einen weiteren Fehler hinzufügen kann, der sich auf die Ereignisse bezieht. Ereignisse können keine Parameter enthalten. Es bedeutet, dass die Datenbindungsbibliothek keine wichtige Fähigkeit besitzt, zusätzliche Informationen beim Senden von Ereignissen zu übertragen. Ich hoffe jedoch, dass es in der nächsten Version behoben wird. Bis das passiert, schau dir die Lösung dieses Problems hier an: Ссылка

    
Vladimir Tchernitski 17.12.2015 11:17
quelle

Tags und Links