import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);
Aktualisieren
Gemäß den gemeinsamen Einstellungen | Android Developer Tutorial (Teil 13) von Sai Geetha MN,
Viele Anwendungen bieten möglicherweise eine Möglichkeit, Benutzereinstellungen für die Einstellungen einer bestimmten Anwendung oder Aktivität zu erfassen. Um dies zu unterstützen, bietet Android einen einfachen Satz von APIs.
Einstellungen sind normalerweise Name-Wert-Paare. Sie können als "Freigegebene Einstellungen" für verschiedene Aktivitäten in einer Anwendung gespeichert werden (beachten Sie, dass sie derzeit nicht für mehrere Prozesse freigegeben werden können). Oder es kann etwas sein, das für eine Aktivität spezifisch gespeichert werden muss.
Freigegebene Einstellungen: Die freigegebenen Einstellungen können von allen Komponenten (Aktivitäten, Dienste usw.) der Anwendungen verwendet werden.
Einstellungen für Aktivitäten: Diese Einstellungen können nur innerhalb der jeweiligen Aktivität verwendet werden und können nicht von anderen Komponenten der Anwendung verwendet werden.
Gemeinsame Einstellungen:
Die gemeinsamen Einstellungen werden mit Hilfe der getSharedPreferences
Methode der Context
Klasse verwaltet. Die Einstellungen werden in einer Standarddatei (1) gespeichert, oder Sie können einen Dateinamen (2) angeben , der zum Verweisen auf die Einstellungen verwendet werden soll.
(1) Die empfohlene Methode ist die Verwendung im Standardmodus ohne Angabe des Dateinamens
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
(2) So erhalten Sie die Instanz, wenn Sie den Dateinamen angeben
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
ist die Betriebsart für die Einstellungen. Dies ist der Standardmodus und bedeutet, dass nur die aufrufende Anwendung auf die erstellte Datei zugreifen kann. Weitere zwei unterstützte Modi sind MODE_WORLD_READABLE
und MODE_WORLD_WRITEABLE
. In einer MODE_WORLD_READABLE
anderen Anwendung kann die erstellte Datei gelesen, aber nicht geändert werden. Bei MODE_WORLD_WRITEABLE
anderen Anwendungen haben Sie auch Schreibberechtigungen für die erstellte Datei.
Sobald Sie die Voreinstellungsinstanz haben, können Sie die gespeicherten Werte wie folgt aus den Voreinstellungen abrufen :
int storedPreference = preferences.getInt("storedInt", 0);
Zum Speichern von Werten in der Voreinstellungsdatei muss ein SharedPreference.Editor
Objekt verwendet werden. Editor
ist eine verschachtelte Schnittstelle in der SharedPreference
Klasse.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Der Editor unterstützt auch Methoden wie remove()
und clear()
zum Löschen der Voreinstellungswerte aus der Datei.
Aktivitätseinstellungen:
Die freigegebenen Einstellungen können von anderen Anwendungskomponenten verwendet werden. Wenn Sie die Einstellungen jedoch nicht mit anderen Komponenten teilen müssen und über private Aktivitätseinstellungen verfügen möchten, können Sie dies mithilfe getPreferences()
der Aktivitätsmethode tun . Die getPreference
Methode verwendet die getSharedPreferences()
Methode mit dem Namen der Aktivitätsklasse für den Namen der Einstellungsdatei.
Im Folgenden finden Sie den Code zum Abrufen der Einstellungen
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Der Code zum Speichern von Werten ist auch der gleiche wie bei gemeinsamen Einstellungen.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Sie können auch andere Methoden verwenden, z. B. das Speichern des Aktivitätsstatus in der Datenbank. Hinweis Android enthält auch ein Paket namens android.preference
. Das Paket definiert Klassen zum Implementieren der Benutzeroberfläche für Anwendungseinstellungen.
Weitere Beispiele finden Sie im Beitrag zur Datenspeicherung von Android auf der Entwicklerseite.
package.prefs
aber ich bin nicht sicher.Wenn Sie keinen Zugriff auf haben
getDefaultSharedPreferenes()
, können SiegetSharedPreferences(name, mode)
stattdessen verwenden, müssen Sie nur den richtigen Namen eingeben.Android erstellt diesen Namen (möglicherweise basierend auf dem Paketnamen Ihres Projekts?). Sie können es erhalten, indem Sie den folgenden Code in a einfügen
SettingsActivity
onCreate()
und sehen, waspreferencesName
ist.Die Zeichenfolge sollte so etwas wie sein
com.example.projectname_preferences
. Harter Code, der irgendwo in Ihrem Projekt ist, und geben Sie ihn an weiter,getSharedPreferences()
und Sie sollten bereit sein, loszulegen.quelle
Deklarieren Sie diese Methoden zuerst.
Rufen Sie dies dann auf, wenn Sie eine Präferenz setzen möchten:
Nennen Sie dies, wenn Sie eine Präferenz erhalten möchten:
Oder Sie können dieses Objekt https://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo verwenden, das alles noch weiter vereinfacht
Beispiel:
quelle
Kontext überall herumgeben zu müssen, nervt mich wirklich. Der Code wird zu ausführlich und nicht mehr handhabbar. Ich mache das stattdessen in jedem Projekt ...
und setzen Sie es in der Hauptaktivität erstellen
Außerdem sollten alle Einstellungsschlüssel sprachunabhängig sein. Ich bin schockiert, dass niemand dies erwähnt hat.
Nennen Sie es jetzt ganz einfach so in einer Codezeile
quelle
getApplicationContext()
Wenn Sie ein Kontrollkästchen haben und dessen Wert abrufen möchten, dh wahr / falsch in einer Java-Datei.
Verwenden--
quelle
Aktualisiert 2019
Sie können einfach die
PowerPreference
Bibliothek verwendenhttps://github.com/AliEsaAssadi/Android-Power-Preference
Gemeinsame Präferenzinstanz abrufen
Um die Standardinstanz zu erhalten, müssen Sie nur aufrufen
Oder wenn Sie eine bestimmte Voreinstellungsdatei möchten
Daten schreiben:
Daten abrufen
quelle
Versuchen Sie, dem Quellcode zu folgen, der bei mir funktioniert hat
quelle