0

Wir machten ein einfaches Clicker-Spiel und ich wollte die Highscores in den SharedPreferences speichern. Also haben wir diesen Code in MainActivity geschrieben:SharedPreferences nicht schreiben/lesen

int Klicks ist die Punktzahl, die Sie diese Runde gemacht haben.

In einer anderen Aktivität, wollten wir den Highscore in einer Textview angezeigt werden:

SharedPreferences sharedPrefs = getSharedPreferences("myPrefs",Context.MODE_PRIVATE); 

    highscore = sharedPrefs.getInt("Highscore",0); 
    highscoretv.setText(Integer.toString(highscore)); 

Aber die Highscore wurde nicht angezeigt. Hast du eine Idee was ich machen kann ??????

+0

'Aber der Highscore wurde nicht angezeigt 'Was wurde angezeigt? '0', ist der Standardwert? Oder erhalten Sie einen Fehler? –

+0

Überprüfen Sie, ob Ihre Klicks den gewünschten Wert halten oder nicht? – rafsanahmad007

Antwort

0

Vielleicht versuchen Context.MODE_PRIVATE zu ersetzen, um nur MODE_PRIVATE in beiden Aktivitäten

+2

['MODE_PRIVATE'] (https://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE) ist nur eine Konstante, die zu '0' auswertet, dies würde das Verhalten nicht ändern. –

0

Sie sollten dieses Stück Code anstelle von Context.MODE_PRIVATE

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
0

Statt editor.commit() der Verwendung; , sollten Sie editor.apply() verwenden; Übernehmen wird das Einstellungsobjekt sofort aktualisieren und die neuen Werte werden asynchron gespeichert.

0

Sorry Jungs. Ich habe es selbst gelöst. Der Highscore wurde in der Launcher-Aktivität angezeigt, die bereits im Hintergrund geöffnet war. Als ich die MainActivity geschlossen habe, wurde die LauncherActivity in Vordergrund gesetzt, aber nicht aktualisiert. Kannst du mir sagen, ob es etwas wie onActivityinForeground gibt, damit ich das verhindern kann?