2013-06-29 15 views
5

So che c'è un post come questo ma non risponde chiaramente alla domanda. Ho un piccolo gioco in cui si tocca una testa e si sposta in una posizione casuale e si ottiene +1 per segnare. Nel frattempo c'è un conto alla rovescia da 60000 (60 secondi) e visualizzato sotto. Come posso renderlo così ogni volta che la testa viene toccata, aggiunge un secondo al timer?Come aggiungere tempo al timer per il conto alla rovescia?

new CountDownTimer(timer, 1) { 
    public void onTick(long millisUntilFinished) { 
     textTimer.setText("Timer " + millisUntilFinished/1000); 
    } 
    public void onFinish() { 
     Intent intent = new Intent(MainActivity.this, Gameover.class); 
     startActivity(intent); 
    } 
}.start(); 

e in caso onClickListner ho:

timer=timer+1000; 

Attualmente non funziona come in non c'è tempo aggiunto sul click.

Qualsiasi aiuto sarebbe apprezzato :)

+0

l'unico modo è chiamare l'annullamento nell'istanza corrente e creare una nuova istanza – Blackbelt

risposta

9

Non è possibile modificare il tempo di un timer programmato. L'unico modo per ottenere ciò che stai cercando di fare è cancellare il timer e impostarne uno nuovo.

public class CountdownActivity extends Activity implements OnTouchListener{ 
    CountDownTimer mCountDownTimer; 
    long countdownPeriod; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_countdown); 
     countdownPeriod = 30000; 
     createCountDownTimer(); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (mCountDownTimer != null) 
       mCountDownTimer.cancel(); 
     createCountDownTimer(); 

     return true; 
    } 

    private void createCountDownTimer() { 
     mCountDownTimer = new CountDownTimer(countdownPeriod + 1000, 1) { 

      @Override 
      public void onTick(long millisUntilFinished) { 
        textTimer.setText("Timer " + millisUntilFinished/1000); 
       countdownPeriod=millisUntilFinished; 
      } 

      @Override 
      public void onFinish() { 
       Intent intent = new Intent(MainActivity.this, Gameover.class); 
       startActivity(intent); 
      } 
     }; 
    } 
} 
+0

OK, lo proverò grazie! – AtomicTim

+0

Ti ha portato a termine il lavoro? –

+0

Ti ha davvero davvero ringraziato :) – AtomicTim