2016-04-12 6 views
0

私はcountdowntimerを試しています。このコードで何が間違っているのか分かりませんが、00:01に来てからカウントダウンは次の秒に同じです。私は多くのことを試みたが、働いていなかったCountDownTimerが表示されない00:00

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()メソッド++>

private int getSec() 
{ 

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

    } 
+0

にcounDownIntervalを変更しようと見ることができるよりも速くなりますか – Opiatefuchs

+0

startTime = timeSec()* 1000 + 1000およびinterval = 1000 – Rohit

+0

とtimeSecの値は何ですか? – Opiatefuchs

答えて

0

if(millisUntilFinished < 1900)

if(millisUntilFinished < 1000)

する必要があります
+0

まだ同じ結果が得られています.. 00:01に1秒間停止し、カウンタを再起動します。 – Rohit

0
@Override 
public void onFinish() { 

    tv.setText("00:00"); 

} 
+0

は、しかし.... – Rohit

0

これは、呼び出される関数の順序の問題です。あなただけelseステートメントを行う必要があり、最初のようにtv.setText("00:00");を呼び出しているが、その後、次の機能がこれを上書き:

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

    } 

あなたがやっていること、あなたがtv.setText("00:00");を設定しますが、次のミリ秒でそれが上書きされます次回のお電話で

tv.setText(String.format("%02d", minutes) 
         + ":" + String.format("%02d", seconds)); 

あなたはelseステートメントが欠落しています。これは、あなたの目は:)

+0

これは正解ですが、downvoteの理由はありません。私は昨日、ちょうどビューの秒で私の答えに大規模なdownvoteを持っていた。誰かが私に怒っているようです...外にはいくつかの変態がありますか? – Opiatefuchs

0

この は自分STARTTIMEと間隔の値は何ですか?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(); 
関連する問題