2016-07-07 15 views

答えて

1

CountDownTimerは再起動できません。一度しか使用できません。再起動を処理できる独自のカウントダウンクラスを作成するか、CountDownTimerの新しいインスタンスを作成して古いインスタンスを取り消すだけです。

、我々は1秒間隔で10秒間カウントダウンCountDownTimerを持っている場所の下のコード例を参照してください(現在のタイマーをキャンセルし、新しいものを開始することで)クリックしたときにタイマーをリセットしButton、およびTextView現在のタイマーに残っている時間を表示します。

public class YourActivity extends Activity { 

    private CountDownTimer countDownTimer; 
    private TextView timerDisplayTextView; 

    private static final long TEN_SECONDS = TimeUnit.SECONDS.toMillis(10); 
    private static final long COUNTDOWN_INTERVAL = TimeUnit.SECONDS.toMillis(1); 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     Button myButton; // initialized here 
     // timerDisplayTextView initialized here 

     myButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       countDownTimer.cancel(); 
       countDownTimer = getNewCountDownTimer(TEN_SECONDS); 
       countDownTimer.start(); 
       showTimeInTextView(TEN_SECONDS); 
      } 
     }); 

     countDownTimer = getNewCountDownTimer(TEN_SECONDS); 
     countDownTimer.start(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     countDownTimer.cancel(); 
    } 

    private void showTimeInTextView(long millisecondsLeft) { 
     timerDisplayTextView.setText(TimeUnit.MILLISECONDS.toSeconds(millisecondsLeft) + " seconds left"); 
    } 

    private CountDownTimer getNewCountDownTimer(long length) { 
     return new CountDownTimer(length, COUNTDOWN_INTERVAL) { 
      @Override 
      public void onTick(long millisUntilFinished) { 
       showTimeInTextView(millisUntilFinished); 
      } 

      @Override 
      public void onFinish() { 

      } 
     }; 
    } 
} 
関連する問題