Ich möchte einen Zeitwert speichern und muss ihn abrufen und bearbeiten. Wie kann ich SharedPreferences
um dies zu tun?
Antworten
Zu viele Anzeigen?Mit dieser Methode können Sie Werte speichern:
public void savePreferencesForReasonCode(Context context,
String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
Und mit dieser Methode können Sie den Wert von SharedPreferences:
public String getPreferences(Context context, String prefKey) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
return sharedPreferences.getString(prefKey, "");
}
Hier prefKey
ist der Schlüssel, den Sie zum Speichern des spezifischen Wertes verwendet haben. Danke.
Grundgedanke der SharedPreferences ist es, Dinge in einer XML-Datei zu speichern.
-
Geben Sie den Pfad zu Ihrer xml-Datei an (wenn Sie diese Datei nicht haben, wird sie von Android erstellt). Wenn Sie diese Datei haben, wird Android auf sie zugreifen).
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
-
Wert in Gemeinsame Präferenzen schreiben
prefs.edit().putLong("preference_file_key", 1010101).apply();
le site
preference_file_key
ist der Name der gemeinsamen Einstellungsdateien. Und die1010101
ist der Wert, den Sie speichern müssen.apply()
Schließlich müssen Sie die Änderungen speichern. Wenn Sie eine Fehlermeldung vonapply()
ändern Sie es incommit()
. Dieser alternative Satz lautet alsoprefs.edit().putLong("preference_file_key", 1010101).commit();
-
Aus gemeinsamen Einstellungen lesen
SharedPreferences sp = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); long lsp = sp.getLong("preference_file_key", -1);
lsp
wird-1
sipreference_file_key
hat keinen Wert. Wenn "preference_file_key" einen Wert hat, wird dieser zurückgegeben.
Der gesamte Code zum Schreiben lautet
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); // Declare xml file
prefs.edit().putLong("preference_file_key", 1010101).apply(); // Write the value to key.
Der Code zum Lesen lautet
SharedPreferences sf = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); // Declare xml file
long lsp = sp.getLong("preference_file_key", -1); // Read the key and store in lsp
Es gibt viele Empfehlungen, wie man die SharedPreferences . Ich habe eine Demoprojekt hier . Der wichtigste Punkt in der Probe ist die Verwendung ApplicationContext & einzelnes Sharedpreferences-Objekt . Dies zeigt, wie man SharedPreferences mit folgenden Merkmalen:-
- Verwendung der Klasse singelton für den Zugriff/Aktualisierung von SharedPreferences
- Keine Notwendigkeit, den Kontext immer für das Lesen/Schreiben von SharedPreferences zu übergeben
- Er verwendet apply() anstelle von commit()
- apply() ist ein asynchrones Speichern, das nichts zurückgibt, sondern zuerst den Wert im Speicher aktualisiert und die Änderungen später auf die Festplatte schreibt asynchron.
- commit() ist eine synchrone Speicherung, die je nach Ergebnis true/false zurückgibt. Änderungen werden synchron auf die Festplatte geschrieben
- funktioniert auf Android 2.3+ Versionen
Nachfolgend ein Beispiel für die Verwendung: -
MyAppPreference.getInstance().setSampleStringKey("some_value");
String value= MyAppPreference.getInstance().getSampleStringKey();
Hier erhalten Sie den Quellcode & Detaillierte API's finden Sie unter aquí auf developer.Android.com
zu sparen
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("VarName","your value").apply();
wieder zu erhalten:
String name = PreferenceManager.getDefaultSharedPreferences(this).getString("VarName","defaultValue");
Standardwert ist : Werte, die zurückgegeben werden, wenn diese Einstellung nicht vorhanden ist.
können Sie ändern " este " mit getActivity() o getApplicationContext() in in einigen Fällen
Die beste Praxis aller Zeiten
erstellen. Schnittstelle benannt mit PreferenceManager :
// Interface to save values in shared preferences and also for retrieve values from shared preferences
public interface PreferenceManager {
SharedPreferences getPreferences();
Editor editPreferences();
void setString(String key, String value);
String getString(String key);
void setBoolean(String key, boolean value);
boolean getBoolean(String key);
void setInteger(String key, int value);
int getInteger(String key);
void setFloat(String key, float value);
float getFloat(String key);
}
Verwendung mit Tätigkeit / Fragment :
public class HomeActivity extends AppCompatActivity implements PreferenceManager{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout_activity_home);
}
@Override
public SharedPreferences getPreferences(){
return getSharedPreferences("SP_TITLE", Context.MODE_PRIVATE);
}
@Override
public SharedPreferences.Editor editPreferences(){
return getPreferences().edit();
}
@Override
public void setString(String key, String value) {
editPreferences().putString(key, value).commit();
}
@Override
public String getString(String key) {
return getPreferences().getString(key, "");
}
@Override
public void setBoolean(String key, boolean value) {
editPreferences().putBoolean(key, value).commit();
}
@Override
public boolean getBoolean(String key) {
return getPreferences().getBoolean(key, false);
}
@Override
public void setInteger(String key, int value) {
editPreferences().putInt(key, value).commit();
}
@Override
public int getInteger(String key) {
return getPreferences().getInt(key, 0);
}
@Override
public void setFloat(String key, float value) {
editPreferences().putFloat(key, value).commit();
}
@Override
public float getFloat(String key) {
return getPreferences().getFloat(key, 0);
}
}
注 Ersetzen Sie den Schlüssel von SharedPreference durch SP_TITEL .
Beispiele:
String speichern en shareperence :
setString("my_key", "my_value");
String holen von shareperence :
String strValue = getString("my_key");
Ich hoffe, das hilft Ihnen weiter.
0 Stimmen
Ich habe einen Generic SharedPreferences Wrapper implementiert, schauen Sie mal rein: Android-know-how-to.blogspot.co.il/2014/03/
0 Stimmen
A vereinfachter Ansatz wäre durch die Verwendung dieser Bibliothek: github.com/viralypatel/Android-SharedPreferences-Helper ... erweiterte technische Details in meinem hier antworten ...
0 Stimmen
stackoverflow.com/a/25585711/1815624