2013-07-23 1 views
0

Я не использую постоянное значение для моего таймера обратного отсчета времени, потому что это различное время для каждого следующего level.So Я использую timeCount набор переменных в 150000 для первого уровня:Как сбросить CountDownTimer по возобновлению активности?

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); 

Но мой countdowntimer всегда начинается от старого времени, 150000ms. Как сбросить его, заставить меня изменить значение timeCount, не выполняет эту работу. Я не знаю почему. Эта переменная изменена, я знаю это точно, но таймер обратного отсчета не использует ее.

+0

Возможно, в методе 'onResume' вашей' деятельности'? – amatellanes

+0

Что делать в нем? – marjanbaz

+0

Вы читаете больше о Жизненном Жизни Деятельности: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – amatellanes

ответ

1

Вы не можете сбросить время в уже созданном CountDownTimer неизменный объект, а ваш timeCount varibale используется только один раз при создании этого объекта. Так что вам нужно просто создать еще один таймер с новым временем.

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.

+0

У меня 20 уровней. Так мне нужно 20 таймеров? – marjanbaz

+0

Да, это правильно, но вам не нужно хранить все в памяти. Когда вам нужен новый таймер, вы можете заменить его старым таймером. – Desert

+0

Не могли бы вы мне помочь? Я могу использовать мой основной код таймера для всех таймеров? – marjanbaz

Смежные вопросы