我没有为倒数计时器使用常数值,因为每个下一个时间段的时间都不相同,因此我将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值不起作用。我不知道为什么我确实知道该变量已更改,但倒数计时器未使用它。

最佳答案

您不能在已经创建的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变量。

07-28 04:04