Ist es möglich, einen Enum-Typ als eingebettetes Feld in einer Entity-Klasse mit der neuen Android Architecture Components und Room Persistence Library zu verwenden?
Meine Entität (mit eingebetteter Enumeration):
%Vor%Mein Typkonverter:
%Vor%Wenn ich das kompiliere, erhalte ich eine Fehlermeldung mit dem Fehler 'Fehler: (52, 12) Fehler: Entitäten und Pojos müssen einen verwendbaren öffentlichen Konstruktor haben. Sie können einen leeren Konstruktor oder einen Konstruktor haben, dessen Parameter den Feldern (nach Name und Typ) entsprechen. '
Update 1 Meine SyncEntity-Klasse:
/ ** * Basisklasse für alle Room-Objekte, die synchronisiert werden. * /
%Vor% Ich kann Enum-Werte bei Room
mit TypeConverters
verwenden. In Ihrem Code müssen einige Teile geändert werden:
1) Sie müssen die Felder Ihrer Entität veröffentlichen oder sie müssen öffentliche Getters / Setter haben. Oder Sie erhalten unter Fehler:
IhrFeld ist nicht öffentlich in YourEntity ; kann nicht von aufgerufen werden außerhalb des Pakets
2) Sie benötigen die @Embedded
Annotation für Ihr status
-Feld nicht. Es ist für verschachtelte Objekte. Mehr aus Dokumenten.
3) Sie haben die @TypeConverters
Annotation nicht an der richtigen Stelle verwendet. In Ihrem Fall kann es über dem Feld status
eingestellt werden. Mehr aus Dokumenten.
4) Sie müssen einen Konstruktor für Ihre Entität definieren oder Sie erhalten den folgenden Fehler:
Entitäten und Pojos müssen einen verwendbaren öffentlichen Konstruktor haben. Sie können einen leeren Konstruktor oder einen Konstruktor haben, dessen Parameter den Feldern entsprechen (nach Name und Typ).
Sie können einen leeren Konstruktor definieren, um diesen Fehler zu überspringen.
5) Verwenden Sie int anstelle von Integer in Ihrem TypeConverter.
Summe; unten funktioniert wie erwartet:
%Vor%Tags und Links android android-room architecture-components