598 Stimmen

Wie man SharedPreferences in Android zum Speichern, Abrufen und Bearbeiten von Werten verwendet

Ich möchte einen Zeitwert speichern und muss ihn abrufen und bearbeiten. Wie kann ich SharedPreferences um dies zu tun?

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

866voto

naikus Punkte 23917

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()) .

307voto

Harneet Kaur Punkte 4437

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*/
}

169voto

DeRagan Punkte 22442

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.

51voto

stackoverflow Punkte 2212

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", "");

30voto

Magesh Pandian Punkte 7601

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X