我想存儲一個int在SharedPreferences
。 int表示用戶在我的遊戲中使用的級別。在比賽開始前,該代碼被執行:SharedPreferences不遞增整數值 - Android
int level;
// Restore preferences
SharedPreferences settings = getSharedPreferences("level_SP", 0);
level = settings.getInt("currentLevel", 0);
if(level == 0) {
level++;
}
String str = Integer.toString(level);
title.setText(str);
是從title.setText(str);
輸出的文本是1
。
出於測試目的,無論用戶如何在遊戲中通過關卡。遊戲結束後,執行此代碼。
public void levels() {
// do calculations here to see if user passed level.
// Restore preferences
SharedPreferences settings = getSharedPreferences("level_SP", 0);
int level = settings.getInt("currentLevel", 0);
int newLevel = level++;
// We need an Editor object to make preference changes.
SharedPreferences.Editor editor = settings.edit();
editor.putInt("currentLevel", newLevel);
// Commit the edits!
editor.commit();
}
然後,當用戶再次開始比賽,他們應該在2級。在這篇文章的頂部,這行代碼粘貼代碼:title.setText(str);
應輸出2
,但它仍然是說1
。這告訴我存儲在SharedPreferences
中的int值不會遞增。
我的問題是,我「正確地」SharedPreferences
?如果是,我是否「正確編輯」SharedPreferences
?如果沒有任何一個,我做錯了什麼?
編輯
思想:不要被分散在我上面的代碼0
意味着什麼?他們應該是別的東西嗎?
'editor.putInt( 「currentLevel」,newLevel);'也許? – hexafraction
「0」肯定意味着什麼。 [見這裏](http://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE)。如果值不存在,則使用'getInt()'也是默認值 – codeMagic