2014-02-14 2 views
0

Перед тем, как начать, я смотрел на множество нитей, включая:Как добавить время в рабочий таймер обратного отсчета?

How to add time to countdown timer? Android game countdown timer

Но я просто не могу получить мой таймер, чтобы работать так, как я требую. Я хочу, чтобы таймер отсчитывал от 30, а когда и изображение нажато (в этом случае названо imageview1), таймер добавляет к таймеру 3 секунды, чтобы дать ему больше времени. Я знаю, что вы не можете существенно прибавить время его бега и вам нужно отменить, а затем начать новый таймер, код у меня до сих пор:

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    //GlobalClass global = new GlobalClass(); 
    Random rand = new Random(); 

    CountDownTimer thetimer = new myTimer(millisInFuture, 1000); 

    switch(v.getId()) { 

    case R.id.buttonstart: 
     btnstart.setVisibility(View.INVISIBLE);  
     thetimer.start(); 
     break; 

    case R.id.imageView1:  
     if (thetimer != null){ 
      thetimer.cancel(); 
      thetimer = new myTimer(countdownPeriod + 3000, 1000).start(); 

     } 

     break; 

с большим количеством других ссылок так, то:

public class myTimer extends CountDownTimer { 

     public myTimer(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval);   
     } 

     @Override 
     public void onTick(long millisUntilFinished) {   
       timedisplay.setText("Time Left: " + millisUntilFinished/1000); 
       countdownPeriod=millisUntilFinished; 

     } 

     @Override 
     public void onFinish() { 
      timedisplay.setText("Timer Finished"); 
      started = false; 
      btnstart.setVisibility(View.VISIBLE); 
     } 
    } 

Я думаю, что проблема заключается в том, что он не отменяет оригинальный таймер, поэтому ярлык, показывающий таймер, делает некоторые сумасшедшие вещи, например, прыгает на разных номерах вверх и вниз, так как там будет больше, чем 1 класс этого тимера. Это несмотря на то, что я включил строку thetimer.cancel(); Таймер работает нормально, если я просто дайте ему поработать на 0.

Любая помощь будет большим

ответ

1

Вы не должны создать таймер как локальный onClick. Вместо этого создайте его как глобальное и запустите его в другом месте (возможно, в onCreate).

Что происходит с текущим кодом является то, что всякий раз, когда onClick называется новый таймер создан, и вы затем отменить новый таймер - который не имеет никакого эффекта на любой ранее созданный таймер (ы).

Попробуйте что-то вроде этого:

public class MyActivity extends Activity { 

    CountDownTimer thetimer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     thetimer = new myTimer(millisInFuture, 1000); 
    } 

    public void onClick(View v) { 
     Random rand = new Random(); 
     switch(v.getId()) { 
     case R.id.buttonstart: 
      btnstart.setVisibility(View.INVISIBLE);  
      thetimer.start(); 
      break; 

     case R.id.imageView1:  
      if (thetimer != null) { 
       thetimer.cancel(); 
       thetimer = new myTimer(countdownPeriod + 3000, 1000).start(); 
      } 
      break; 
     } 
    }  
} 

Вы все еще должны будете следить за глобальное время где-то - то есть countDonwPeriod используется для повторного создания экземпляра таймера, когда изображение прикосновении - это, вероятно, следует извлеченный из таймера перед его отменой.

+0

Привет, Благодарим вас за ответ. Я изменил его, чтобы объявить countdowntimer вне метода onclick (ошибка школьника), однако по-прежнему не удается остановить таймер при щелчке изображения ... i.e timer.cancel(); Любые другие идеи? – Xeo

+0

Я думаю, что это что-то общего со мной, открытый класс JavaMenu расширяет Activity реализует onclicklistener. Я удалил утилиты onclicklistener и вынул инструкцию к делу и заменил слушателей Onclick на каждый отдельный imgviews и т. Д., И теперь он работает ... не на 100%, почему он не был счастлив, работая в том, как я изначально настроил его .... но теперь это LOL ... выходные делают чудеса для мозга. Спасибо за помощь – Xeo

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