Ich möchte einen Zeitwert speichern und muss ihn abrufen und bearbeiten. Wie kann ich SharedPreferences
um dies zu tun?
Antworten
Zu viele Anzeigen?Um gemeinsame Einstellungen zu erhalten, verwenden Sie die folgende Methode In Ihrer Aktivität:
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
Präferenzen lesen:
String dateTimeKey = "com.example.app.datetime";
// use a default value using new Date()
long l = prefs.getLong(dateTimeKey, new Date().getTime());
So bearbeiten und speichern Sie Ihre Einstellungen
Date dt = getSomeDate();
prefs.edit().putLong(dateTimeKey, dt.getTime()).apply();
Das Beispielverzeichnis des Android-Sdk enthält ein Beispiel für das Abrufen und Speichern von gemeinsamen Einstellungen. Es befindet sich im Verzeichnis:
<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory
Bearbeiten==>
Mir ist aufgefallen, dass es wichtig ist, den Unterschied zu schreiben zwischen commit()
y apply()
auch hier.
commit()
return true
wenn Wert erfolgreich gespeichert, sonst false
. Es speichert Werte in SharedPreferences synchron .
apply()
wurde in 2.3 hinzugefügt und gibt weder bei Erfolg noch bei Misserfolg einen Wert zurück. Es speichert die Werte sofort in SharedPreferences, startet aber ein asynchrone verpflichten. Weitere Einzelheiten sind [aquí](http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()) .
Um Werte in gemeinsamen Einstellungen zu speichern:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name","Harneet");
editor.apply();
Zum Abrufen von Werten aus gemeinsamen Einstellungen:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", "");
if(!name.equalsIgnoreCase(""))
{
name = name + " Sethi"; /* Edit the value here*/
}
An bearbeiten Daten von sharedpreference
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("text", mSaved.getText().toString());
editor.putInt("selection-start", mSaved.getSelectionStart());
editor.putInt("selection-end", mSaved.getSelectionEnd());
editor.apply();
An abrufen. Daten von sharedpreference
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null)
{
//mSaved.setText(restoredText, TextView.BufferType.EDITABLE);
int selectionStart = prefs.getInt("selection-start", -1);
int selectionEnd = prefs.getInt("selection-end", -1);
/*if (selectionStart != -1 && selectionEnd != -1)
{
mSaved.setSelection(selectionStart, selectionEnd);
}*/
}
Editar
Ich habe diesen Ausschnitt aus dem API-Demo-Beispiel genommen. Es hatte eine EditText
box there . In diesem context
Es ist nicht erforderlich. Ich kommentiere das Gleiche.
Zum Schreiben:
SharedPreferences preferences = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Authentication_Id",userid.getText().toString());
editor.putString("Authentication_Password",password.getText().toString());
editor.putString("Authentication_Status","true");
editor.apply();
Zum Lesen:
SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");
Singleton Shared Preferences Class. Das kann für andere in Zukunft hilfreich sein.
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class SharedPref
{
private static SharedPreferences mSharedPref;
public static final String NAME = "NAME";
public static final String AGE = "AGE";
public static final String IS_SELECT = "IS_SELECT";
private SharedPref()
{
}
public static void init(Context context)
{
if(mSharedPref == null)
mSharedPref = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
}
public static String read(String key, String defValue) {
return mSharedPref.getString(key, defValue);
}
public static void write(String key, String value) {
SharedPreferences.Editor prefsEditor = mSharedPref.edit();
prefsEditor.putString(key, value);
prefsEditor.commit();
}
public static boolean read(String key, boolean defValue) {
return mSharedPref.getBoolean(key, defValue);
}
public static void write(String key, boolean value) {
SharedPreferences.Editor prefsEditor = mSharedPref.edit();
prefsEditor.putBoolean(key, value);
prefsEditor.commit();
}
public static Integer read(String key, int defValue) {
return mSharedPref.getInt(key, defValue);
}
public static void write(String key, Integer value) {
SharedPreferences.Editor prefsEditor = mSharedPref.edit();
prefsEditor.putInt(key, value).commit();
}
}
Einfach anrufen SharedPref.init()
en MainActivity
einmal
SharedPref.init(getApplicationContext());
Zum Schreiben von Daten
SharedPref.write(SharedPref.NAME, "XXXX");//save string in shared preference.
SharedPref.write(SharedPref.AGE, 25);//save int in shared preference.
SharedPref.write(SharedPref.IS_SELECT, true);//save boolean in shared preference.
So lesen Sie Daten
String name = SharedPref.read(SharedPref.NAME, null);//read string in shared preference.
int age = SharedPref.read(SharedPref.AGE, 0);//read int in shared preference.
boolean isSelect = SharedPref.read(SharedPref.IS_SELECT, false);//read boolean in shared preference.
- See previous answers
- Weitere Antworten anzeigen
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