为什么此代码不起作用?
此代码应将Countdowntimer扩展到10秒(每次点数为20,40,60)等。但是当我启动它并且我的分数是20时,它在TextView中显示正确的时间值。但是它在1秒内消失了,Countdowntimer得到了旧值并继续。有人有想法吗?
int bonus_time = 1 , sec = 10000 , point == 0;
points_timer =new CountDownTimer(sec,1000) {
@Override
public void onTick(long millisUntilFinished)
{
if ( point == (bonus_time * 20))
{
++bonus_time;
millisUntilFinished += 10000;
sec += 10000;
}
++point;
}
@Override
public void onFinish()
{
bonus_time = 1;
}
};
答案 0 :(得分:0)
无法扩展CountDownTimer,类中没有方法提供此功能。
您尝试将时间添加到sec
是没用的,我甚至想知道它是如何编译的。无论如何,在Java中,整数是按值传递的,所以一旦你通过1000
,你就传递了它并且不能改变那个值。
唯一的补充是重新创建一个新计时器并使用它而不是旧计时器。或者重新编码一切,你可以扩展自己的计时器。
答案 1 :(得分:0)
in
public void onTick(long millisUntilFinished)
你做了
millisUntilFinished += 10000;
你不能分配给原始参数,并期望它改变该方法之外的任何东西(例如,millisUntilFinished的范围是onTick方法,仅此而已)
答案 2 :(得分:0)
当你创建一个时间为sec
变量的计时器时,它并没有神奇地连接两者,所以当sec
的值改变计时器的时间变化时,它只使用{的值{1}}当你制作计时器时。{/ p>
同样适用于更改sec
,它是您从回调获得的参数,通过更改其值,您没有做任何事情。
更改计时器时间的唯一方法是创建一个新计时器。这是我的建议:
millisUntilFinished
计时器的创建由一个函数包围,每次获得奖励时都会调用该函数,以使用新值// GLOBAL VARIABLES
CountDownTimer points_timer;
int bonus_time = 1 , sec = 10000 , point == 0;
public void createTimer()
{
points_timer =new CountDownTimer(sec,1000) {
@Override
public void onTick(long millisUntilFinished)
{
sec = millisUntilFinished;
if ( point == (bonus_time * 20))
{
++bonus_time;
//millisUntilFinished += 10000;
sec += 10000;
createTimer();
}
++point;
}
@Override
public void onFinish()
{
bonus_time = 1;
}
};
}
重新创建计时器。
希望这有效..