2016-08-23 27 views
0

誰でもこのコードで私を助けることができますか?動作していますが、カウントダウンタイマーが終了すると、アプリが終了します。テキストに "finish"を表示したい。しかし、私が使用しているonFinishのコードは実行可能ではないようです。アンドロイド用カウントダウンタイマー

public class SimpleCountdowTimer extends CountDownTimer { 
public static int oneSecond = 1000; 
TextView statusTextView; 
ProgressBar mprogressBar, mprogressBar1; 
Button startTimerButton; 
Button stopTimerButton, pauseTimerButton, resumeTimerButton; 
private long timeRemaining = 0; 

public SimpleCountdowTimer(long millisInFuture, long countDownInterval, 
          TextView statusTextView, ProgressBar mprogressBar, ProgressBar mprogressBar1) { 

    super(millisInFuture, countDownInterval); 

    this.statusTextView = statusTextView; 
    this.mprogressBar1 = mprogressBar1; 
    this.mprogressBar = mprogressBar; 
} 

@Override 
public void onTick(long millisInFuture) { //do something in every tick 

     //Put count down timer remaining time in a variable 
     statusTextView.setText(String.valueOf(millisInFuture/ oneSecond)); 
     long millis = millisInFuture; 
     timeRemaining = millisInFuture; 
     long countDownInterval = 1000; 
     mprogressBar1.setProgress((int) (millisInFuture)); 
     //Convert milliseconds into hour,minute and seconds 
     String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
     statusTextView.setText(hms);//set text 
    } 

@Override 
public void onFinish() { 
     statusTextView.setText("00:00:00"); 
     mprogressBar.setVisibility(View.VISIBLE); 
     mprogressBar1.setVisibility(View.VISIBLE); 
     //Disable the pause, resume and cancel button 
     pauseTimerButton.setEnabled(false); 
     resumeTimerButton.setEnabled(false); 
     stopTimerButton.setEnabled(false); 
     //Enable the start button 
     startTimerButton.setEnabled(true); 
} 
} 
+0

[何NullPointerExceptionがある、と私はそれをどのように修正すればよい?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-howの可能性のある重複-do-i-fix-it) – earthw0rmjim

+0

ログはありますか? –

答えて

0
Why don't you use this way : 

    CountDownTimer cdt = new CountDownTimer(10000, 1000) { 

      @Override 
      public void onTick(long millisUntilFinished) { 
       statusTextView.setText(String.valueOf(millisInFuture/ oneSecond)); 
     long millis = millisInFuture; 
     timeRemaining = millisInFuture; 
     long countDownInterval = 1000; 
     mprogressBar1.setProgress((int) (millisInFuture)); 
     //Convert milliseconds into hour,minute and seconds 
     String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
     statusTextView.setText(hms);//set text 
      } 

      @Override 
      public void onFinish() { 
       statusTextView.setText("00:00:00"); 
     mprogressBar.setVisibility(View.VISIBLE); 
     mprogressBar1.setVisibility(View.VISIBLE); 
     //Disable the pause, resume and cancel button 
     pauseTimerButton.setEnabled(false); 
     resumeTimerButton.setEnabled(false); 
     stopTimerButton.setEnabled(false); 
     //Enable the start button 
     startTimerButton.setEnabled(true); 
      } 
     }; 

     cdt.start(); 
関連する問題