1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Daten einer SharedPreference in anderen Views bzw. Activities nutzen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von draikin, 03.06.2010.

  1. draikin, 03.06.2010 #1
    draikin

    draikin Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    09.04.2010
    Phone:
    HTC Desire
    Ich brauche mal einen Tipp für folgendes Problem: Ich schreibe an einer App, bei der ich auch eine Activity für die Einstellungen habe. Diese ist abgeleitet von PreferenceActivity. Die Daten werden auch ohne Probleme gespeichert und geändert. Nun möchte ich diese Werte in einer anderen Activity (anderer Bildschirm) der Applikation nutzen. Leider schaffe ich es nicht die Daten zu lesen. Ich bekomme immer den default-Wert zurück. Wie ist da das vorgehen. Mit der Suche in der Doku habe ich nichts dazu gefunden. Aber das liegt wohl daran, dass dies wohl eher ein generelles Verständnisproblem zu sein scheint. Hier noch einmal der Code mit dem ich versuche die Daten der Preferences auszulesen:

    Code:
            SharedPreferences settings = getSharedPreferences(EditConfiguration.CONFIGURATION_NAME, 1);
            String userWt = settings.getString("userwt", "1");
            String userHt = settings.getString("userht", "1");
    
    und der Ausschnitt aus der Preference-Klasse:

    Code:
    public class EditConfiguration extends PreferenceActivity
    {
        public static final String CONFIGURATION_NAME = EditConfiguration.class
                .getSimpleName();
    ...
    }
    
    Über eine Tipp, oder Hinweis auf die entsprechende Doku würde ich mich freuen.
     
  2. sixi, 05.06.2010 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    Hier ne Klasse, die ich für die Preferences benutze - funktioniert wunderbar ;)

    Code:
    public class Preferences {
    	
    	
    	
    	private static final String SHARED_PREFERENCES_NAME = "myActivity.preferences";
    
    	private static Editor EDITORINSTANCE = null;	
    	private static SharedPreferences INSTANCE = null;
    	
    
    	public static SharedPreferences getInstance(final Context ctx) {
    		if (INSTANCE == null) {
    			INSTANCE = PreferenceManager.getDefaultSharedPreferences(ctx);
    		}
    		return INSTANCE;
    	}
    	
    	public static Editor getEditorInstance(final Context ctx){
    		if(EDITORINSTANCE == null) {
    			EDITORINSTANCE = getInstance(ctx).edit();
    		}
    		return EDITORINSTANCE;
    	}
    
    }
    
     
  3. draikin, 12.06.2010 #3
    draikin

    draikin Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    09.04.2010
    Phone:
    HTC Desire
    Danke für Dein Codebeispiel. Meine Preferences -Activity funktioniert ohne Probleme. Was nicht klappt, ist die gespeicherten Daten, die ich im Emulator in der App sehen kann, in einer anderen Activity zu lesen, indem ich mir die Preferences über den Namen hole und dann lese.

    Hat noch jemnd einen Tipp oder ein Beispiel, wo bzw. wie das funktioniert?
     
  4. draikin, 12.06.2010 #4
    draikin

    draikin Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    09.04.2010
    Phone:
    HTC Desire
    Ich habe nun die Lösung meines Problems bei android-developers gefunden. Mein Fehler war das ich
    Code:
    SharedPreferences settings = getSharedPreferences(EditConfiguration.CONFIGURATION_NAME, 0);
    verwendet habe, was aber versucht die Preferences der aktuellen Activity zu laden. Um an die global gespeicherten Daten zu kommen muß
    Code:
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
    verwendet werden. Dann kann ich auch alle Werte auslesen.


    P.S.: Wie kann ich den Thread als gelöst markieren?
     

Diese Seite empfehlen