0
我正在製作一個遊戲,其中存儲最佳時間在SharedPreferences
。玩家獲勝時執行的方法如下。布爾包含SharedPreferences不起作用
public void victory(){
gameOver = true;
Toast.makeText(this, "Victory!", Toast.LENGTH_LONG).show();
Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer1);
chronometer.stop();
long elapsedTime = SystemClock.elapsedRealtime() - chronometer.getBase();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if (elapsedTime < sharedPreferences.getLong("best", 2147483647));{
sharedPreferences.edit().putLong("best", elapsedTime).apply();
}
}
所以,正如你所看到的,只有當它比最佳時間更好時纔會存儲當前遊戲的時間。
這裏是onCreate
其中加載代碼,並顯示它們的最佳時間:
TextView bestScore = (TextView) findViewById(R.id.bestScore);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if (sharedPreferences.getLong("best", 2147483647) < 2147483647){
int min = (int) Math.floor(sharedPreferences.getLong("best", 2147483647)/60000);
int sec = Math.round((sharedPreferences.getLong("best", 2147483647) - min)/1000);
String mm = "" + min;
String ss = "" + sec;
if (min < 10){
mm = "0" + min;
}
if (sec < 10){
ss = "0" + sec;
}
String bestTime = mm + ":" + ss;
bestScore.setText("Best: " + bestTime);
}
但是,出於某種原因,它讓每一個玩家贏得時間更新的最佳時間,即使時間差。請幫助。
我認爲elapsedTime計算可能有問題,請嘗試打印勝利時間的elapsedTime值。 – NehaK
不,我不這麼認爲,因爲「最好的」TextView正確地顯示了前一次遊戲的時間,但這不是最好的時間。 –
如果勝利()方法中的語句是拼寫錯誤,那麼分號後的分號? –