2017-01-25 41 views
0

我們做了一個簡單的答題器遊戲,我想把高分保存在SharedPreferences中。因此,我們在MainActivity中編寫了以下代碼:SharedPreferences不寫/讀

SharedPreferences sharedPref = getSharedPreferences("myPrefs",Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = sharedPref.edit(); 
      editor.putInt("Highscore",clicks); 
      editor.commit(); 

int clicks是您在該輪中獲得的分數。

在另一個活動,我們希望在一個TextView顯示排行榜:

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

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

,但沒有顯示高分。你有一個想法我可以做什麼??????

+0

'但高分不顯示'顯示什麼? '0',是默認的?或者你有錯誤? –

+0

檢查你的'clicks'是否保持所需的值? – rafsanahmad007

回答

0

也許嘗試更換Context.MODE_PRIVATE只是MODE_PRIVATE在這兩個活動

+2

['MODE_PRIVATE'](https://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE)只是一個常量,它的計算結果爲'0',這不會改變行爲。 –

0

你應該使用這段代碼,而不是Context.MODE_PRIVATE

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

而不是使用editor.commit()的; ,你應該使用editor.apply(); Apply將立即更新首選項對象,並將異步保存新值。

0

對不起。我自己解決了它。 Highscore顯示在已經在後臺打開的Launcher Activity中。所以當我關閉MainActivity時,LauncherActivity進入了前臺,但沒有更新。你能告訴我是否有像OnActivityinForeground這樣的東西,所以我可以防止這種情況?