Таймер обратного отсчета не запускается с новым значением, установленным для времени

Я использую таймер обратного отсчета времени в формате 00:00 с этим кодом:

int 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;
                }


    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        setContentView(R.layout.kviz);

brojacVremena.start();
}

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);
         }
         }
   MyCount brojacVremena = new MyCount(timeCount, 1000) 
   {

       public void onTick(long millisUntilFinished) 
       {
           vreme.setText("" + formatTime(millisUntilFinished));
       }

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

И это прекрасно работает. Но когда моя игра заканчивается, я запускаю всплывающее окно с startActivityForResult, и после того, как пользователь нажимает в нем кнопку «ОК», я начинаю следующий уровень, и мне нужно обновить свое время. Это уже не 150000 мс, это что-то другое. Я делаю это так:

static final int MY_REQUEST2 = 1;

Intent i = new Intent(Kviz.this, Popup_nivoi.class);
                numberOfQuestions = 13;
                timeCount = 160000;
                i.putExtra("time", 160);
startActivityForResult(i, MY_REQUEST2);

Здесь я обновляю переменную int timeCount новым значением, но когда таймер запускается, я снова перехожу от 150 секунд. Что я делаю не так?

Этот метод отлично работает с несколькими другими переменными, которые я использую в этом классе, для точек, ошибок, оставшихся попыток и т. д. Не обновляется только переменная времени.


person marjanbaz    schedule 23.07.2013    source источник
comment
Разве ты не хочешь просто i.putExtra("time",timeCount)? или я совсем не понимаю   -  person chancea    schedule 23.07.2013
comment
Это просто показать пользователю в этом всплывающем окне, сколько времени у него есть, используя TextView. Мне не нужно было помещать это здесь в код.   -  person marjanbaz    schedule 23.07.2013
comment
Строка, в которой я сбрасываю переменную времени: timeCount = 160000;. Но проблема в том, что когда я снова запускаю обратный отсчет, он начинается со старого времени.   -  person marjanbaz    schedule 23.07.2013
comment
О, ладно, может быть, потому что ваш timeCount уже был передан в таймер CountDown, вам нужно сбросить millisUntilFinished или millisInFuture   -  person chancea    schedule 23.07.2013
comment
Ну, я думал, что таймер обратного отсчета будет проверять эту переменную каждый раз, когда он запускается. Как сделать тот сброс, который вы упомянули?   -  person marjanbaz    schedule 23.07.2013
comment
Похоже, вы передаете это значение таймеру CountDown, и я предполагаю, что он делает его локальную копию и помещает ее либо в millisUntilFinished, либо в millisInFuture. Вам нужно будет либо сделать, либо использовать существующий вызов метода, который позволяет сбросить эти значения.   -  person chancea    schedule 23.07.2013
comment
Я пытался найти, как это сделать, но ничего. Можете ли вы сказать мне, как я могу это сделать?   -  person marjanbaz    schedule 23.07.2013
comment
Я не знаю, как у вас разработан код, когда вы перезапускаете таймер на следующем уровне... возможно, посмотрите некоторые из этих ссылок: stackoverflow.com/questions/11221829/ или stackoverflow.com/questions/9537748/   -  person chancea    schedule 23.07.2013
comment
@marjanbaz вам удалось заставить таймер обратного отсчета принимать новые значения времени? Я застрял прямо сейчас.   -  person Gordons    schedule 14.03.2017