如何才能让计数器的值倒计时?
我一直在尝试像这样的sg,但它的类型有问题:
counter = new MyCount(10000,1000);
String secs;
secs=counter.toString();
if (started == false)
{
counter.start();
started = true;
switch (secs) {
case 8000:
tv3.setTextColor(Color.RED);
break;
case 3000:
tv3.setTextColor(Color.BLUE);
break;
}
}
更新
MyCount声明为MyCount counter;
我也有这段代码:
`public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
tv = (TextView)findViewById(R.id.TextView01);
tv.setText("Time is up!");
}`
我把开关部分放在这里:
@Override
public void onTick(long millisUntilFinished) {
tv.setText("" + millisUntilFinished/1000);
switch (millisUntilFinished) { //here is the problem
case 8000:
tv3.setTextColor(Color.RED);
break;
case 3000:
tv3.setTextColor(Color.BLUE);
break;
}
}
switch参数有问题:“无法打开long类型的值。只允许使用convertable int值或enum常量”
这就是我将该行更改为switch ((int)millisUntilFinished/1000) {
并更改为case 8:
和case 3:
的案例行。
谢谢!
答案 0 :(得分:2)
我不知道MyCount
是什么,但我看到了错误。变量secs
的类型为String
,但您尝试将其与整数(3000,8000)进行比较。您无法在String
块中使用switch
个变量。您需要使用整数变量,或者,如果counter具有String类型,请使用类似此代码而不是switch
块:
if ("8000".equals(secs)) {
tv3.setTextColor(Color.RED);
} else if ("3000".equals(secs)) {
tv3.setTextColor(Color.BLUE);
}
更新:如果您使用CountDownTimer的子类,则需要在MyCount
类中定义onTick()
回调,如下所示:
@Override
public void onTick(long millisUntilFinished) {
switch (millisUntilFinished) {
case 8000:
...
break;
case 3000:
...
break;
}
}
答案 1 :(得分:0)
如评论中所述,什么是MyCount()?
并且,加上谢尔盖的回答:
你'开始'计数器,但你从不做任何其他事情(我们可以看到)计数器如何更新?