2017-06-22 8 views
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); 
    } 

をしかし、何らかの理由で、それは時間が悪化している場合でも、最高の時間にプレイヤーが勝利するたびに更新し続けています。助けてください。

+0

私はelapsedTimeの計算に問題があるかもしれないと思って、勝利時にelapsedTimeの値を表示しようとします。 – NehaK

+0

いいえ、 "最高の" TextViewが以前のゲームの時間を正しく表示しているため、私はそうは思わないが、それは最良の時間ではありません。 –

+0

victory()メソッドのステートメントがタイプミスならセミコロン? –

答えて

1

victory()メソッドには、if文の後にセミコロンがあります。

if (elapsedTime < sharedPreferences.getLong("best", 2147483647));{ 
    sharedPreferences.edit().putLong("best", elapsedTime).apply(); 
} 

ただ削除してください。

関連する問題