我正在制作一个游戏,其中我想保存用户的最高分,所有都在我的游戏中工作但问题是当我退出游戏时,高分的用户自动重置但我想要使它显示给所有用户,直到它休息,然后它将更新。
退出游戏后显示的对话框:
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);
}
答案 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);
}