SharedPreferences
에 int를 저장하고 싶습니다. 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
입니다.
사용자가 게임을하는 방법에 관계없이 테스트 목적으로 레벨을 통과합니다. 게임이 끝나면이 코드가 실행됩니다. title.setText(str);
를 출력합니다 2
,하지만 여전히 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에 있어야합니다 . 그게 내가
SharedPreferences
에 저장된 int가 증가하지 않는다는 것을 말해 줍니 다.
제 질문은 SharedPreferences
을 정확하게 "얻고 있습니다"입니까? '예'인 경우 SharedPreferences
을 올바르게 편집하고 있습니까? 둘 중 하나가 아니라면 내가 뭘 잘못하고 있니?
편집
생각 : 내 위의 코드에 흩어져있는 0
가 무엇을 의미합니까? 그들은 다른 것일까요?
'editor.putInt 시도하는 단계;'아마도 ? – hexafraction
"0"은 분명히 의미가 있습니다. [여기를보십시오] (http://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE). 값이 존재하지 않을 때를 위해'getInt()'를 사용할 때 기본값이기도합니다. – codeMagic