0

次のレベルごとに時間が異なるため、カウントダウン タイマーには定数値を使用しません。したがって、最初のレベルでは timeCount 変数を 150000 に設定して使用します。

    long timeCount = 150000;

public String formatTime(long millis) {  
                    String output = "00:00";  
                    long seconds = millis / 1000;  
                    long minutes = seconds / 60;  

                    seconds = seconds % 60;  
                    minutes = minutes % 60;  

                    String sec = String.valueOf(seconds);  
                    String min = String.valueOf(minutes);  

                    if (seconds < 10)  
                        sec = "0" + seconds;  
                    if (minutes < 10)  
                        min= "0" + minutes;  

                    output = min + " : " + sec;  
                    return output;
                }

そして私のタイマー:

public class MyCount extends CountDownTimer {
         public MyCount(long millisInFuture, long countDownInterval) {
             super(millisInFuture, countDownInterval);
         }

         public void onFinish() {


         }
         public void onTick(long millisUntilFinished) {
             vreme.setText("" + millisUntilFinished / 1000);
         }
         }
    // New timer for 40 minutes, starts after initialization
   MyCount brojacVremena = new MyCount(timeCount, 1000) 
   {
       // Updates the text on your "scoreboard" every second
       public void onTick(long millisUntilFinished) 
       {
           vreme.setText("" + formatTime(millisUntilFinished));
       }

       public void onFinish() 
       {
        finish();
       }
   };

そのため、ゲームが終了するとポップアップ ウィンドウが表示され、[OK] を押すと次のレベルが表示されます。ポップアップを呼び出して、時間などの新しい値を設定します。

Intent i = new Intent(Kviz.this, Popup_nivoi.class);
            if(level==2){
                numberOfQuestions = 13;
                timeCount = 160000;
                greska = 7;
                level++;
}
brojacVremena.cancel();
            startActivityForResult(i, MY_REQUEST2);

しかし、私のカウントダウンタイマーは常に古い時間の 150000ms から始まります。それをリセットする方法は、timeCount の値を変更してもうまくいかないからです。どうしてか分かりません。その変数が変更されていることは確かですが、カウントダウンタイマーはそれを使用しません。

4

1 に答える 1

2

すでに作成された時間をリセットすることはできません。CountDownTimerこれは不変オブジェクトであり、timeCount変数はこのオブジェクトの作成時に一度だけ使用されます。したがって、新しい時間で別のタイマーを作成するだけです。

UPD:ここにいくつかのコードがあります

public class MyCount extends CountDownTimer {
     public MyCount(long millisInFuture, long countDownInterval) {
         super(millisInFuture, countDownInterval);
     }

     public void onFinish() {
         finish();
     }

     public void onTick(long millisUntilFinished) {
         vreme.setText("" + formatTime(millisUntilFinished));
     }
}
MyCount brojacVremena = new MyCount(timeCount, 1000);

次に、新しいタイマーが必要なときは、書くだけです

brojacVremena = new MyCount(timeCount, 1000);

新しいtimeCount変数で。

于 2013-07-23T16:20:35.283 に答える