Wir müssen Benutzerobjekte an vielen Stellen abrufen, die viele Felder enthalten. Nach dem Login möchte ich diese Benutzerobjekte speichern / speichern. Wie können wir ein solches Szenario implementieren?
Ich kann es nicht so speichern:
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
android
sharedpreferences
Piraba
quelle
quelle
Antworten:
Sie können gson.jar zu speichern Klassenobjekte in verwenden SharedPreferences . Sie können dieses Glas von herunterladen Google-Gson herunterladen
Oder fügen Sie die GSON-Abhängigkeit in Ihre Gradle-Datei ein:
Gemeinsame Einstellungen erstellen:
Speichern:
So rufen Sie ab:
quelle
Um die Antwort von @ MuhammadAamirALi zu ergänzen, können Sie mit Gson eine Liste von Objekten speichern und abrufen
Liste der benutzerdefinierten Objekte in SharedPreferences speichern
Liste der benutzerdefinierten Objekte aus SharedPreferences abrufen
quelle
Ich weiß, dass dieser Thread etwas alt ist. Aber ich werde das trotzdem posten, in der Hoffnung, dass es jemandem helfen könnte. Wir können Felder eines beliebigen Objekts nach gemeinsamen Vorgaben speichern, indem wir das Objekt in String serialisieren . Hier habe ich
GSON
zum Speichern eines Objekts nach gemeinsamen Vorlieben verwendet.Objekt in den Einstellungen speichern:
Objekt aus den Einstellungen abrufen:
Hinweis :
Denken Sie daran
compile 'com.google.code.gson:gson:2.6.2'
,dependencies
in Ihrem Gradle hinzuzufügen.Beispiel :
Aktualisieren:
Wie @Sharp_Edge in den Kommentaren hervorhob, funktioniert die obige Lösung nicht
List
.Durch eine geringfügige Änderung der Signatur von
getSavedObjectFromPreference()
- vonClass<GenericClass> classType
bisType classType
wird diese Lösung verallgemeinert. Geänderte Funktionssignatur,Zum Aufrufen,
Viel Spaß beim Codieren!
quelle
commit
stattapply
. Es könnte dir helfen.List<CustomClass>
wie soll ich das machen?getSavedObjectFromPreference(context, "mPreference", "mObjectKey", SampleClass.class)
akzeptiert nichtList<CustomClass>.class
:(Besser ist es, eine globale zu machen
Constants
Klasse zum Speichern von Schlüsseln oder Variablen zum Abrufen oder Speichern von Daten zu erstellen.Um Daten zu speichern, rufen Sie diese Methode auf, um Daten von jedem Ort zu speichern.
Verwenden Sie es, um Daten abzurufen.
und eine Methode wie diese wird den Trick tun
quelle
Versuchen Sie dies am besten:
PreferenceConnector.java
Schreiben Sie den Wert:
Und erhalten Sie Wert mit:
quelle
return PreferenceManager.getDefaultSharedPreferences(context);
anstelle vonreturn context.getSharedPreferences(PREF_NAME, MODE);
Sie haben danach nicht angegeben, was Sie mit dem
prefsEditor
Objekt tun , aber um die Präferenzdaten beizubehalten, müssen Sie außerdem Folgendes verwenden:quelle
Sehen Sie hier, dies kann Ihnen helfen:
https://github.com/AltasT/PreferenceVObjectFile/blob/master/PreferenceVObjectFile/src/com/altas/lib/PreferenceUtils.java
quelle
Eine andere Möglichkeit, ein Objekt aus freigegebenen Android-Einstellungen zu speichern und wiederherzustellen, ohne das Json-Format zu verwenden
quelle
Sie können Objekte in Einstellungen speichern, ohne eine Bibliothek zu verwenden. Zunächst muss Ihre Objektklasse Serializable implementieren:
}}
Dann können Sie diese beiden Methoden leicht verwenden, um Objekt in Zeichenfolge und Zeichenfolge in Objekt zu konvertieren:
Speichern:
Lesen
quelle
Schritt 1: Kopieren Sie diese beiden Funktionen und fügen Sie sie in Ihre Java-Datei ein.
Schritt 2: Speichern der Verwendung:
Verwendung abrufen:
Sie können verschiedene gemeinsame Einstellungen festlegen, indem Sie verschiedene Schlüsselnamen verwenden, z.
quelle
Wenn Sie das gesamte Objekt speichern möchten, das Sie als Antwort erhalten, können Sie dies erreichen, indem Sie Folgendes tun:
Erstellen Sie zunächst eine Methode, die Ihren JSON in eine Zeichenfolge in Ihrer util-Klasse konvertiert (siehe unten).
Dann machen Sie in der Klasse für gemeinsame Einstellungen so etwas wie:
und erstellen Sie dann eine Methode für getPreferences
Rufen Sie dann einfach die erste Methode auf, wenn Sie eine Antwort erhalten, und die zweite, wenn Sie Daten aus Freigabeeinstellungen wie erhalten möchten
das ist alles.
Hoffe es wird dir helfen.
Happy Coding();
quelle
Ich hatte Probleme, die akzeptierte Antwort zu verwenden, um über Aktivitäten hinweg auf gemeinsame Voreinstellungsdaten zuzugreifen. In diesen Schritten geben Sie getSharedPreferences einen Namen, um darauf zuzugreifen.
Fügen Sie der Datei build.gradel (Modul: App) unter Gradle Scripts die folgende Abhängigkeit hinzu:
Speichern:
So rufen Sie in einer anderen Aktivität ab:
quelle
hoffe das hilft dir :)
quelle
Hier ist eine Einführung in die Verwendung von Kotlin-delegierten Eigenschaften , die ich hier aufgenommen habe , aber erweitert habe und die einen einfachen Mechanismus zum Abrufen / Festlegen von SharedPreference-Eigenschaften ermöglicht.
Für
String
,Int
,Long
,Float
oderBoolean
, verwendet es den Standard SharePreference Getter (n) und Setter (s). Für alle anderen Datenklassen wird jedoch GSON verwendet, um zu a zu serialisierenString
, um für den Setter . Deserialisiert dann auf das Datenobjekt für den Getter.Ähnlich wie bei anderen Lösungen muss dazu GSON als Abhängigkeit in Ihre Gradle-Datei eingefügt werden:
Hier ist ein Beispiel für eine einfache Datenklasse, die wir in SharedPreferences speichern und speichern möchten:
Hier ist die eine Klasse, die die Eigenschaftsdelegierten implementiert:
Hinweis: Sie sollten nichts in der aktualisieren müssen
sealed class
. Die delegierten Eigenschaften sind das Objekt / SingletonsUserPreferenceProperty
,NullableUserPreferenceProperty
undFirstTimeUser
.Das Einrichten eines neuen Datenobjekts zum Speichern / Abrufen von SharedPreferences ist jetzt so einfach wie das Hinzufügen von vier Zeilen:
Schließlich können Sie Werte in SharedPreferences lesen / schreiben, indem Sie einfach das
by
Schlüsselwort verwenden:quelle
Wenn Ihr Objekt komplex ist, würde ich vorschlagen, es zu serialisieren / XML / JSON und diese Inhalte auf der SD-Karte zu speichern. Weitere Informationen zum Speichern im externen Speicher finden Sie hier: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
quelle
Es gibt zwei Dateien, die Ihr Problem mit gemeinsam genutzten Einstellungen gelöst haben
1) AppPersistence.java
2) AppPreference.java
Jetzt können Sie speichern, entfernen oder erhalten,
-sparen
-entfernen
-bekommen
quelle
Speichern Sie Daten in SharedPreference
quelle
Meine Utensilienklasse zum Speichern der Liste an
SharedPreferences
Verwenden von
.
Vollständiger Code meiner Utils // Überprüfen Sie anhand eines Beispiels im Aktivitätscode
quelle
Jackson-Bibliothek zum Gradle hinzugefügt:
Meine Testklasse:
Java-Objekt zu JSON:
Speichern Sie es in gemeinsamen Einstellungen:
Stellen Sie es aus den freigegebenen Einstellungen wieder her:
quelle