2016-08-23 5 views
0

Kann mir hier jemand mit diesem Code helfen? Es funktioniert, aber wenn der Countdown-Timer beendet ist, schließt es meine Apps. Ich möchte, dass "Finish" im Text angezeigt wird. Aber die Kodierung für onFinish, die ich verwendet habe, scheint nicht praktikabel.Countdown-Timer für Android

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

Mögliches Duplikat [Was für eine Nullpointer ist, und wie kann ich es beheben?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how -do-i-fix-it) – earthw0rmjim

+0

hast du irgendwelche Protokolle bekommen? –

Antwort

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();