延长Countdowntimer的时间

时间:2014-04-12 10:21:07

标签: java android countdowntimer

为什么此代码不起作用?

此代码应将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;
        }
    };

3 个答案:

答案 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; } }; } 重新创建计时器。

  • 您还应该使用该方法代替之前的代码,以便最初创建计时器。

希望这有效..