2016-05-22 4 views
0

Ich benutze gemeinsame Voreinstellungen, um einen Int zu speichern, der der Highscore eines Spiels ist, das ich erstellt habe. Das Problem ist, dass es überhaupt nicht gespeichert wird. Wenn ich mein Gerät neu starte/die App herunterfahre oder was auch immer der Highscore ist. Was ist das Problem?Gemeinsame Voreinstellungen funktionieren nicht wie vorgesehen

Shop

SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = sp.edit(); 
editor.putInt("your_int_key", highScore); 
editor.commit(); 

abrufen

SharedPreferences sp1 = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
int highScoreSaved = sp1.getInt("your_int_key", 0); 

lassen Sie mich wissen, wenn Sie mich mehr Code hinzufügen möchten. Vielen Dank!

+0

Sie rufen die Daten in derselben Klasse ab, in der Sie die Daten speichern? –

Antwort

0

Versuchen Sie, diese zu verwenden, wenn SharedPreference Instanz bekommen:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this /* Current context */); 

So Schlüssel-Wert-Paare werden Speicher in der Standarddatei, die alle Aktivitäten in der Anwendung teilen, was Kontext Sie es passieren.

Allerdings, wenn Sie nicht über eine Standardinstanz der Datei verwenden möchten, können Sie einfach bearbeiten Sie Code, um es Anwendungskontext zu machen verwenden:

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("prefs_file", Context.MODE_PRIVATE); 

Normalerweise ziehe ich den ersten Ansatz, da flexibler und einfach mit einer Single-Instance-Datei zu verwenden.

+1

Ja, das funktioniert. Ich habe deine zweite Option benutzt, weil ich das ein bisschen einfacher zu verstehen finde. Danke, das hat mich wirklich gestört! –