2013-07-29 4 views
0

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가 무엇을 의미합니까? 그들은 다른 것일까요?

+2

'editor.putInt 시도하는 단계;'아마도 ? – hexafraction

+0

"0"은 분명히 의미가 있습니다. [여기를보십시오] (http://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE). 값이 존재하지 않을 때를 위해'getInt()'를 사용할 때 기본값이기도합니다. – codeMagic

답변

3

사용

editor.putInt("currentLevel", newLevel); 

대신.

새로운 레벨을 얻으면 읽는 것과 다른 취향으로 글을 쓰고 있습니다.

+0

내 개조를 참조하십시오. 제안한 편집 후에도 잘못된 출력이 계속됩니다. – Matt

2

당신이 currentLevel 결코 1

+0

오프닝 포스트에서 내 편집을 참조하십시오. 제안한 편집 후에도 잘못된 출력이 계속됩니다. – Matt

0

이에서 변경되지 않도록 당신은 소재 기존에 새 SharedPreference을 만드는 대신 편집이

editor.putInt("newLevel", newLevel); 

editor.putInt("currentLevel", newLevel); 

을 변경하려는 것 같습니다 문제는 다음과 같습니다.

이 같이 동일한 것을 의미 후행 증가 연산자를 사용하는 10

:

int newLevel = level; 
level = level + 1; 

는 ("currentLevel"newLevel)를

int newLevel = level + 1; 
관련 문제