我正在製作一款遊戲,我想保存用戶的最高分數,所有遊戲都在我的遊戲中工作,但問題是,當我退出遊戲時,自動設置,但我想讓它顯示給所有用戶,直到它休息,然後它會更新。使用sharedpreference保存高分
這是退出遊戲後顯示對話框:
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);
}
@VishalSharma prefernce文件的名稱是「數據」,您在其中保存您的高分,因此檢索名稱時應該只是「數據」而不是「高」,請嘗試上述解決方案,並請知道如果這有效。 –
沒有先生,它不工作 –
@VishalSharma現在嘗試...你用來保存和檢索高分的關鍵是不同的 –