在Android

时间:2016-07-07 13:43:02

标签: android onclicklistener countdowntimer

我正在尝试使用Button为倒数计时器做一些示例,并为该Button设置OnclickListener。我的默认值是10,它将每秒减少,我如何将我的值重置为10?

1 个答案:

答案 0 :(得分:1)

CountDownTimer无法重新启动,只能使用一次。您要么必须创建自己的倒计时类来处理重新启动,要么只创建CountDownTimer的新实例并取消旧实例。

请参阅下面的示例代码,其中我们有CountDownTimer以1秒为间隔倒计时10秒,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() {

            }
        };
    }
}