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が以前のゲームの時間を正しく表示しているため、私はそうは思わないが、それは最良の時間ではありません。 –
victory()メソッドのステートメントがタイプミスならセミコロン? –