使用共享偏好保存高分

时间:2017-05-06 20:55:09

标签: android

我正在制作一个游戏,其中我想保存用户的最高分,所有都在我的游戏中工作但问题是当我退出游戏时,高分的用户自动重置但我想要使它显示给所有用户,直到它休息,然后它将更新。

退出游戏后显示的对话框:

 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 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 display(){

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

3 个答案:

答案 0 :(得分:0)

试试这个

保存高分:

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();

答案 1 :(得分:0)

首先,您在应用中创建了两个共享偏好设置位置,一个名为"高",第二个名为"数据",然后您" 39;将高分值保存在一个并尝试从另一个获得它。我希望你现在明白了什么是错的。 这是一个更好的解决方案示例。

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);
}

答案 2 :(得分:0)

使用名称创建共享首选项,即"数据"。使用键设置高分" highScore"并把你的分数。当您检索到获得" highScore"并更新。

你可以使用prefs-droid,一个用于android共享偏好的包装工具。

如果您使用此库,请在您的应用程序中创建共享首选项。

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

仅使用一行保存分数

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

获得分数

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

并使用

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

显示分数

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