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

6voto

Md. Sajedul Karim Punkte 6961

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.

6voto

kakarott Punkte 61

Grundgedanke der SharedPreferences ist es, Dinge in einer XML-Datei zu speichern.

  1. 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);
  2. 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 die 1010101 ist der Wert, den Sie speichern müssen.

    apply() Schließlich müssen Sie die Änderungen speichern. Wenn Sie eine Fehlermeldung von apply() ändern Sie es in commit() . Dieser alternative Satz lautet also

    prefs.edit().putLong("preference_file_key", 1010101).commit();
  3. 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 si preference_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

5voto

Akhil Punkte 6547

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

5voto

Nadir Belhaj Punkte 11634

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

5voto

Hiren Patel Punkte 50526

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.

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