Android - CountDownTimer不会将变量用作第一个参数

时间:2013-09-06 23:28:28

标签: android countdowntimer

我正在尝试向countdowntimer传递一个变量,并将该变量用作倒计时的毫秒数。如果我只是输入倒数就能正常工作的值,但如果我传递一个长变量,它就会运行onFinish函数。

这是实际的代码:

public CountDownTimer countDown = new CountDownTimer(respawnTime, 1000) {

    @Override
    public void onTick(long millisUntilFinished) {
        timer =(Integer)(int) millisUntilFinished / 1000;
        if(timer < 31)
            timerText.setTextColor(Color.parseColor("#FF0000"));
        timerText.setText(timer.toString());
    }

    @Override
    public void onFinish() {
        timerText.setTextColor(Color.parseColor("#00FF00"));
        timerText.setText("UP");

    }
};

此时我已将respawnTime设置为等于360000,希望360秒倒计时,但就像我说它只是立即运行onFinish。只需将第一个参数更改为文字而不是变量即可修复所有内容,但我需要在此处使用变量。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

更改

 @Override
public void onTick(long millisUntilFinished) {

 @Override
public void onTick(long respawnTime) {

使用constructor onTick()中发送的变量。

修改

这是我的一个

private class MyCountDown extends CountDownTimer
{
    long duration, interval;
    public MyCountDown(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        // TODO Auto-generated constructor stub
        duration = millisInFuture;
        interval = countDownInterval;
        start();
    }

    @Override
    public void onFinish() {
        secs = 10;
        Intent intent = new Intent(CalibrationTimeoutScreen.this, CalibrationTakeTempScreen.class);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        startActivity(intent);
        CalibrationTimeoutScreen.this.finish(); 
    }

    @Override
    public void onTick(long duration) {
        cd.setText(String.valueOf(secs));           
        secs = secs - 1;            
    }   
}

答案 1 :(得分:0)

您没有运行start()。只需在最后一次'}'之后添加.start(),或添加一个名为countDown.start()的新行。