我正在尝试向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。只需将第一个参数更改为文字而不是变量即可修复所有内容,但我需要在此处使用变量。在此先感谢您的帮助!
答案 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()
的新行。