2017-05-06 2 views
0

나는 최고 점수의 사용자를 저장하고 싶습니다. 모든 게임에서 작동하지만 문제는 내가 게임을 종료 할 때 사용자가 높은 점수를 얻었습니다. 자동으로 설정되지만 모든 사용자가 휴식을 취한 다음 업데이트 할 때까지 표시하도록하고 싶습니다.sharedpreference를 사용하여 높은 점수를 저장합니다.

게임을 종료 한 후 보여됩니다

대화 상자 : 높은 점수

private int getHighScore(){ 
    SharedPreferences highScore=getSharedPreferences("high",0); 
    return highScore.getInt("highScore",0); 
} 

높은 점수를 표시 높은 점수

private void saveHighScore(){ 

    SharedPreferences sharedPreferences=getSharedPreferences("data",0); 
    SharedPreferences.Editor writer=sharedPreferences.edit(); 

    int displayValue=playerScore; 
    //Username-Highscore 
    writer.putInt("display",displayValue); 

    writer.commit(); 
    display(); 

} 

저장을 얻을 수

private void showGameOverDialog() { 





      int previousScore=getHighScore(); 
      if(playerScore>previousScore){ 
       saveHighScore(); 
      } 

      //AlertDialog 
      //AlertDialog.Builder 

      AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle("Exit Game"); 
      builder.setMessage("Afraid?"); 
      //Positive, Negative, Neutral 
      //Anonymous Inner Type Interface Implementation 
      builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        exitGame(); 

       } 
      }); 
      builder.setNegativeButton("No", 

        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          resetGame(); 
         } 
        } 
      ); 
      AlertDialog exitDialog=builder.create(); 
      exitDialog.show(); 


} 

방법

private void display(){ 

    SharedPreferences sharedPreferences=getSharedPreferences("data",0); 
    String userString=sharedPreferences.getString("playerName","Nothing found"); 
    int highScore=sharedPreferences.getInt("display",0); 
    username.setText(userString+"-"+highScore); 
} 

답변

0

.. 그것은이

저장 높은 점수를 시도

private int getHighScore(){ 
     SharedPreferences highScore=getSharedPreferences("data",0); 
     return highScore.getInt("display",0); 
    } 
+0

@VishalSharma prefernce 파일의 이름은 높은 점수를 저장하는 "데이터"이므로 이름을 검색하는 것이 "높음"이 아닌 "데이터"일 수는 있지만 위의 해결책을 시도해보십시오. 이게 작동하면. –

+0

아니오 선생님, 작동하지 않습니다. –

+0

@VishalSharma 지금 시도하십시오 ... 높은 점수를 저장하고 검색하는 데 사용 된 키가 다릅니다 –

0

일 수도로를 getHighScore() 메소드를 대체하고, 시도 :

SharedPreferences preferences = 
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor = preferences.edit(); 

editor.putInt("myHighScore", --your high score--); 
editor.commit(); 

디스플레이를

SharedPreferences preferences = 
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
int myInt = preferences.getInt("myHighScore", -1); 
username.setText("High Score : " + myInt); 

을 삭제하십시오.
SharedPreferences preferences = 
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor = preferences.edit(); 

editor.remove("myHighScore"); 

editor.commit(); 
0

는 우선, you'r 앱에이 개 공유 환경 설정 위치를 만들고, 하나는 "높은"라고하며, 두 번째는 다음 하나에 높은 점수 값을 저장하고, "데이터"라고하며 다른 사람에게서 그것을 얻으려고 노력하는 것. 나는 당신이 지금 무엇이 잘못되었는지 알기를 바랍니다. 여기가 더 나은 솔루션을위한 샘플입니다.

private static final String HIGH_PREF_KEY = "high_score"; 
SharedPreferences sharedPreferences=getSharedPreferences("GAME_SHAREDPREF",0); 


puplic void saveHighScore(int score){ 
SharedPreferences.Editor writer = sharedPreferences.edit(); 
writer.putInt(HIGH_PREF_KEY,score).commit(); 
} 

puplic int getHighScore(){ 
return sharedPreferences.getInt(HIGH_PREF_KEY, 0); 
} 
0

이름 (예 : "데이터")으로 공유 환경 설정을 만듭니다. 높은 점수를 "highScore"키로 설정하고 점수를 입력하십시오. 당신이 검색 할 때 "highScore"를 얻고 업데이트합니다.

prefs-droid, 안드로이드 공유 환경 설정을위한 래퍼 도구를 사용할 수 있습니다.

이 라이브러리를 사용하는 경우 응용 프로그램에서 공유 환경 설정을 만듭니다.

Preference.load().using(this).with(PREFERENCE_NAME).prepare(); 

private int getHighScore(){ 
    return Preference.getInt("highScore"); 
} 

하여 점수를 얻을 및

private void resetScore() { 
    Preference.remove("highScore); 
} 

디스플레이에게 점수

,691를 사용하여 재설정 한 라인

private void saveHighScore(){ 
    Preference.putInt("highScore", highScore); 
} 

를 사용하여 점수를 저장

private void display(){ 
    int highScore = getHighScore(); 
    username.setText(userString + "-" + highScore); 
} 
+0

어디서이 1 행 코드를 타야합니까? –

+0

공유 환경 설정에서 저장하거나 업데이트하거나 제거하려는 곳 – ARiF

관련 문제