SharedPreferences Problem

E

endkore

Neues Mitglied
2
Guten Abend Community,

ich habe ein Problem mit SharedPreferences. Er soll zwischen 2 Activites einen Integer Wert ausgeben. Im ersten wird der Wert ständig erhöht und gespeichert:

Code:
onclick++;
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("ONCLICK", onclick);
editor.commit();

Das funktioniert auch reibungslos, die Extra Datei bekommt immer mehr Speicher, das Problem was ich nun habe ist, dass ich Sie nicht abrufen kann.
Ich habe folgende Methode in der 2. Activity:

Code:
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(onclick);
int SCORE = sharedPref.getInt("ONCLICK", onclick);

Logischerweise sollte der Wert ja übernommen werden, nur scheitere ich seit heute Mittag daran. In den stackOverflow Foren habe ich auch schon alles durchgesucht. Ich hoffe ihr könnt mir helfen.

Grüße Kevin
 
Meiner Meinung nach musst du getSharedPreferences() anstatt von getPreferences() verwenden.
Activity | Android Developers
Activity persistent state is managed with the method getPreferences(int), allowing you to retrieve and modify a set of name/value pairs associated with the activity. To use preferences that are shared across multiple application components (activities, receivers, services, providers), you can use the underlying Context.getSharedPreferences() method to retrieve a preferences object stored under a specific name.
Context | Android Developers


oder ich steh selber aufn Schlauch und kapiers nicht ...
 
Jo, der Meinung bin ich auch.

Aber trotzdem sieht der Code oben nicht besonders gut aus.
Wäre es nicht sinnvoller counter mit dem Wert aus der Datei zu laden dann zu erhöhen und wieder abzulegen?

Als Tipp:
lege vielleicht noch eine public final class FABRIK (o.ä.) an, in der du alle Konstanten verwaltest.

int SCORE = sharedPref.getInt(FABRIK.ONCLICK_KEY, onclick); // sicherer, da immer der gleiche Key gezogen wird
 
Zuletzt bearbeitet:
Also ich habe es mit dieser Zeile mal ausprobiert:
Code:
SharedPreferences sharedPref = getSharedPreferences("ONCLICK", Context.MODE_PRIVATE);

und es funktioniert weiterhin nicht. Habe herausgefunden, dass ein Nullpointer vorliegt, wenn ich die Variable auslesen will:

Code:
textView1.setText(""+onclick);

Also wird es denke ich mal nicht richtig übermittelt.
 
Ajo, du solltest halt auch deinen SCORE ausgeben. ;)
Aber dass der "CAPSLOCKED" geschrieben ist verstößt gegen die Konvention(, da offenbar nicht als Konstante gedacht). :D

Code:
int [COLOR=Red]score [/COLOR]= sharedPref.getInt("ONCLICK", onclick);

textView1.setText(""+[COLOR=Red]score [/COLOR]);
damit sollte es gehen...
 
Zuletzt bearbeitet:
Zusätzlich würde ich als 2. Parameter bei "getInt" tatsächlich einen Wert eintragen (0, -1) und keine Variable übergeben:

Code:
int score = sharedPref.getInt("ONCLICK", 0);
textView1.setText(""+score );

Das ergibt für mich gar keinen Sinn, da "onclick" zu übergeben. Wenn der default-Wert doch variabel sein soll, musst Du mal mehr Code posten oder die Absicht dahinter erklären.
 
Endlich! Es funktioniert, ich danke euch so sehr :biggrin:
Jetzt wo ich den Wert erstmal auslese und DANN erhöhe, scheint es wunderbar zu funktionieren :thumbsup:
 
  • Danke
Reaktionen: ui_3k1

Ähnliche Themen

D
Antworten
9
Aufrufe
1.769
jogimuc
J
W
  • WuDiDong
Antworten
3
Aufrufe
769
jogimuc
J
S
Antworten
4
Aufrufe
995
Sempervivum
S
Zurück
Oben Unten