0

我正在尝试向倒数计时器传递一个变量,并将该变量用作倒计时的毫秒数。如果我只是输入该值,倒计时可以正常工作,但如果我将它传递给一个长变量,它只会运行 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。只需将第一个参数更改为文字而不是变量即可解决所有问题,但我需要在这里使用变量。在此先感谢您的帮助!

4

2 回答 2

0

改变

 @Override
public void onTick(long millisUntilFinished) {

 @Override
public void onTick(long respawnTime) {

constructor使用您在in中发送的变量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;            
    }   
}
于 2013-09-06T23:36:10.110 回答
0

你没有跑start()。只需.start()在最后一个 '}' 之后添加或添加一个新行调用countDown.start().

于 2013-09-06T23:55:20.243 回答