2016-05-22 56 views
0

我使用共享偏好來存儲一個int,這將是我創建的遊戲的高分。問題是它根本不存儲。當我重新啓動我的設備/關閉應用程序或任何高分不見了。有什麼問題?共享偏好不能按預期工作

商店

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

檢索

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

讓我知道如果你要我添加任何代碼。謝謝!

+0

您是否正在檢索存儲數據的同一班級中的數據? –

回答

0

嘗試獲得SharedPreference例如,當使用這樣的:

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

所以鍵值對將在應用程序中的所有活動將共享默認的文件,任何情況下你傳遞給它的商店。

但是,如果你不想使用該文件的默認實例,你可以編輯你的代碼,以使它使用應用程序上下文:

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

通常我更喜歡第一種方法,因爲更加靈活,易於與單個實例文件一起使用。

+1

是的,這是有效的。我使用了第二個選項,因爲我發現有點簡單易懂。謝謝,這真讓我煩惱! –