Im diesem Kapitel befassen wir uns mit dem Laden und Speichern von Daten mit Hilfe der Android SharedPreferences Klasse.

Android SharedPreferences Programmier-BeispielDie Klasse SharedPreferences ermöglicht das Laden und Speichern von Schlüssel/Wert Paaren. Im folgendem Beispiel wird der Wert eines EditText Steuerelements beim Beenden der App gespeichert und beim erneuten Starten aus den SharedPreferences geladen und angezeigt.
Das Endergebnis sieht dann aus wie im Screenshot rechts:

 

Android SharedPreferences Beispiel:

Zum Erstellen der Beispiel-App führen Sie bitte die folgenden Schritte aus:

  1. Starten Sie bitte mit dem Erstellen eines neuen Android Applicatoin Project mit dem Namen SharedPreferences und einem Activity vom Typ Empty Activity.
  2. Fügen Sie dem Layout ein EditText Element hinzu.
  3. Ändern Sie die Klasse MainActivity.java wie im folgenden Codebeispiel:
    package com.individuapp.sharedpreferences;
    
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.widget.EditText;
    
    public class MainActivity extends Activity {
    	private static final String FILENAME = "PreferencesFilename";
    	private static final String VAL_KEY = "ValueKey";
    	private EditText editText;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		editText = (EditText) findViewById(R.id.editText1);
    		SharedPreferences sharedPrefs = getSharedPreferences(FILENAME, 0);
    		editText.setText(sharedPrefs.getString(VAL_KEY, "Standardwert falls nicht gesetzt"));
    	}
    	
    	@Override
    	protected void onStop() {
    		super.onStop();
    		
    		SharedPreferences sharedPrefs = getSharedPreferences(FILENAME, 0);
    		SharedPreferences.Editor editor = sharedPrefs.edit();
    		editor.putString(VAL_KEY, editText.getText().toString());
    		editor.commit();
    	}
    }
    

    Hier passiert folgendes:

    • In den Zeilen 9 und 10 werden Konstanten für den Zugriff auf die SharedPreferences Datei sowie für den zu lesenden/schreibenden Wert angelegt.
    • In Zeile 11 wird eine Variable zum Zwischenspeichern des EditText Steuerelementes angelegt.
    • In der Methode onCreate() wird in Zeile 18 eine Referenz auf das EditText Steuerelement abgefragt und zwischengespeichert.
      In Zeile 19 wird die SharedPreferences Datei geöffnet, bevor in Zeile 20 eine Zeichenkette daraus gelesen und dem EditText Stuerelement zugewiesen wird.
      Der erste Parameter der Methode SharedPreferences.getString() gibt den Schlüssel (den Namen) des zu lesenden Wertes an. Der Zweite Parameter gibt einen Standardwert an, der geliefert wird, wenn kein Wert mit dem angegebenen Schlüssel vorhanden ist.
    • Die Methode onStop() wird vor dem Beenden der App aufgerufen. Wie bei allen Lebenszyklen-Methoden muss dessen Implementierung der Vaterklasse aufgerufen werden, was im obigen Beispiel in Zeile 25 durch den Aufruf der Methode super.onStop() geschieht.
      In Zeile 27 wird zuerst die SharedPreferences Datei geöffnet, bevor in Zeile 28 eine Editor-Klasse für den Schreibzugriff abgefragt wird. Mittels der Editor-Klasse wird in Zeile 29 der Text aus dem EditText Steuerelement zum Schreiben in die SharedPreferences Datei vorgemerkt (jedoch noch nicht geschrieben).
      Zum Schluss wird in Zeile 30 durch Aufruf der Methode commit() die ShardPreferences Datei geschrieben.
Da das Serialisieren und Speichern von Klassen in SharedPreferences nicht möglich ist, wird zum Speichern von serialisierbaren Java-Klassen die Klasse File verwendet.

Link zur Android Dokumentation (Englisch)

Android SharedPreferences