2016-04-12 15 views
0

Ben bu kodda neyin yanlış olduğunu bilmiyorum countdowntimer çalışıyorum ama 00:01 sonraki saniye için aynı kalır .. geri sayım 00:00 almıyorum. i birçok şeyi denedik ama CountDownTimer Gösterilmiyor 00:00

çalışmıyordu CDTimer ++>

public class CDTimer extends CountDownTimer { 

     public CDTimer(long startTime, long interval) { 
      super(startTime, interval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 

      String zero = tv.getText().toString(); 
      if(millisUntilFinished < 1950){ 
       tv.setText("00:00"); 
       } 
       long seconds = (millisUntilFinished/1000); 
       long minutes = seconds/60; 
       seconds = seconds % 60; 
       tv.setText(String.format("%02d", minutes) 
         + ":" + String.format("%02d", seconds)); 
      Log.d("Time", String.valueOf(timeRemain)); 


      timeRemain = millisUntilFinished; 

     } 

     @Override 
     public void onFinish() { 
      if (isWarmup) { 
       isLow = true; 
       isWarmup = false; 
       isHigh = false; 
       startTime = getSec() * 1000 + 1000 ; 
       disp_txt.setText("Low Interval"); 
       cd = new CDTimer(startTime, interval); 
       cd.start(); 
      } else if (isLow) { 
       isLow = false; 
       isWarmup = false; 
       isHigh = true; 
       startTime = getSec() * 1000 + 1000; 
       disp_txt.setText("High Interval"); 
       cd = new CDTimer(startTime, interval); 
       cd.start(); 
      } else if (isHigh) { 
       isLow = false; 
       isWarmup = true; 
       isHigh = false; 
       disp_txt.setText("Completed"); 
       tv.setText("00:00"); 
       start.setText("START AGAIN"); 
       btn_chk = 0; 
       cd.cancel(); 

      } 


     } 
    } 

timeSec() yöntemi ++>

private int getSec() 
{ 

     if (isWarmup) 
      return warmup; 
     else if (isLow) 
      return lowint; 
     else 
      return highint; 

    } 
+0

için counDownInterval değiştirmek deneyin görebiliyordu daha hızlı gider? – Opiatefuchs

+0

startTime = timeSec() * 1000 + 1000 ve aralık = 1000 – Rohit

+0

ve timeSec değeri nedir? – Opiatefuchs

cevap

0

if(millisUntilFinished < 1900)

if(millisUntilFinished < 1000)

olmalıdır
+0

hala aynı sonucu alıyor ... 00: 01'de 1 saniye duraklar ve sayaç – Rohit

0
@Override 
public void onFinish() { 

    tv.setText("00:00"); 

} 
+0

yeniden başlatır zaten onFinish kodu .. ama .... – Rohit

0

Bu, çağrılan işlevlerin sırası ile ilgili bir sorundur. Ne yaptın

@Override 
    public void onTick(long millisUntilFinished) { 

     String zero = tv.getText().toString(); 
     if(millisUntilFinished < 1950){ 
      tv.setText("00:00"); 
     }else{//put an else statement here 
      long seconds = (millisUntilFinished/1000); 
      long minutes = seconds/60; 
      seconds = seconds % 60; 
      tv.setText(String.format("%02d", minutes) 
        + ":" + String.format("%02d", seconds)); 
     Log.d("Time", String.valueOf(timeRemain)); 
     } 

     timeRemain = millisUntilFinished; 

    } 

Eğer tv.setText("00:00"); set, ancak sonraki milisaniye azından yazılır vardır: Bu durumda, ilk tv.setText("00:00"); arayarak, ancak bir sonraki fonksiyonlar sadece bir başka açıklama yapmak zorunda bu üzerine Bir sonraki ifadeyle, başka bir ifadeyi kaçırdınız çünkü

. Bu gözlerin :)

+0

Bu doğru bir cevaptır, downvote için bir sebep yoktur. Dünkü cevaplarımda sadece bir saniyelik düşüşte aşırı düşüş yaşadım. Biri bana kızgın gibi görünüyor ... Dışarıda bir kaçık var mı? – Opiatefuchs

0

sizin starttime ve aralık değerleri nelerdir bu sadece 100

 new CountDownTimer(10000, 100) { 

       public void onTick(long millisUntilFinished) { 
        Log.d(TAG, "time :" + millisUntilFinished); 
        if(millisUntilFinished <= 100){ 
         onFinish(); 
        }else { 
         count_down.setText(""+millisUntilFinished/1000); 
        } 
       } 

       public void onFinish() { 
        showCorrect(false); 
       } 
      }.start();