Ich kann keine preferences speichern

Jaiel

Jaiel

Dauergast
235
Hallo hier mal ein code wie ich sharedpreferences lade und speichere:
PHP:
        public void loadSharedPrefs()
	{
                SharedPreferences prefs=getPreferences(0);
		pView.soundOn=prefs.getBoolean("sound", true);
		pView.highScore=prefs.getInt("highScore",0);
		pView.starPoints=prefs.getInt("starPoints",0);
		pView.gamesPlayed=prefs.getInt("gamesPlayed",0);
		pView.dotsPopped=prefs.getInt("dotsPopped",0);
		pView.timePlayed=prefs.getInt("timePlayed",0);
	}
	
	public void setSharedPrefs()
	{

	    SharedPreferences.Editor editor = getPreferences( 0).edit();

		editor.putInt("highScore",pView.highScore);
		editor.putInt("starPoints",pView.starPoints);
		editor.putInt("gamesPlayed",pView.gamesPlayed);
		editor.putInt("dotsPopped",pView.dotsPopped);
		editor.putInt("timePlayed",pView.timePlayed);
	    editor.commit();
	}


das ist aus meiner 2. activity in der 1. gibt es nur die load preferences methode

ich schaffe es aber nciht die preferences zu schreiben...

die ganzen variablen werden auch richtig initialisiert , sind sogar als volatile deklariert, selbst wenn sie zu einem zeitpunkt geschrieben werden wo cih sicher weiß dass diese nciht mehr von anderer stelle aus geschrieben werden


lesen tue ich sofort nachdem ich die view initialisiert habe
schreiben kurz bevor ich die activity beende und die view als null überschreibe

es passiert auch alles auf dem UI Thread, keine konkurrenz zu erwarten!


Komisch!!!

Habe ich zu viele variablen geschrieben? Oder muss ich editor.commit nach ejdem beschreiben aufrufen?


alles ausser das boolean klappt nciht zu beschreiben!!!

Der ursprüngliche Beitrag von 01:50 Uhr wurde um 01:59 Uhr ergänzt:

Ich hoffe ich muss nciht auf files ausweichen

Der ursprüngliche Beitrag von 01:59 Uhr wurde um 02:09 Uhr ergänzt:

liegt es vllt daran dass ich nur getPreferences() aufrufe?

Der ursprüngliche Beitrag von 02:09 Uhr wurde um 02:11 Uhr ergänzt:

ok es liegt daran die preferences bleiben nur für diese activity gespecihert...hatte es irgendwo mal anders gelesen....in den google docs steht auch ncihts darüber aber eclipse hat es mir dann angezeigt dass es nur für die jew. activity gilt!
 
Wenn du

getPreferences("packagename.Classname", 0) benutzt und immer die selbe Class (z.b. settings.class) dabei angibst, hast du sowas wie ein App-weites Prefs-modell. Statt der 0 kannst du eine andere Zugriffsberechtigung setzen, evtl. auch interessant ?

siehe auch hier:
Context | Android Developers
 
Zuletzt bearbeitet:
zumafx schrieb:
Wenn du

getPreferences("packagename.Classname", 0) benutzt und immer die selbe Class (z.b. settings.class) dabei angibst, hast du sowas wie ein App-weites Prefs-modell. Statt der 0 kannst du eine andere Zugriffsberechtigung setzen, evtl. auch interessant ?

siehe auch hier:
Context | Android Developers

hey danke für die antwort hatte ich dann auch halbe stunde anch dem post rausgefunden....

ich habe wie gesagt nciths bei den docs unter getpreferences gefunden gibts es nciht nur getsharedpreferences,was ich komisch fand ich sehe immer noch keine getPreferences() in den docs.....wieso die das nicht dokumentiert haben komisch.....ich kam auch nur durch eclipse darauf wo ich mit dem mauszeiger über die emthode gefahren bin"ruft getsharedpreferences() auf . diese preferences werden unter der activity gespecihert" oder so ähnlich

speichert es auch bei klassen? ich denke nur activities....seis drum jetzt läuft es ich benutze ab jetzt getsharedprefs...ich finde preferences nur für activities zu speichern nett aber der sinn hat sich mir noch nicht ergeben
 
soweit ich das richtig gesehen habe, ist
getSharedPreferences
unter Context eingebunden, während
getPreferences()
unter Activity eingebunden ist.

und während bei getSharedPreferences das etwas allgemeiner steht

public abstract SharedPreferences getSharedPreferences (String name, int mode)

Added in API level 1
Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values. Only one instance of the SharedPreferences object is returned to any callers for the same name, meaning they will see each other's edits as soon as they are made.

wird es bei Activity auch deutlicher:

public SharedPreferences getPreferences (int mode)

Added in API level 1
Retrieve a SharedPreferences object for accessing preferences that are private to this activity. This simply calls the underlying getSharedPreferences(String, int) method by passing in this activity's class name as the preferences name.
 
hab ich wohl überlesen in den docs für activities danke
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.049
jogimuc
J
5
Antworten
22
Aufrufe
1.417
590239
5
A
Antworten
10
Aufrufe
1.902
swa00
swa00
Zurück
Oben Unten