Android的价值计数器

时间:2011-05-30 12:18:42

标签: android counter

如何才能让计数器的值倒计时?

我一直在尝试像这样的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:的案例行。

谢谢!

2 个答案:

答案 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()?

并且,加上谢尔盖的回答:

你'开始'计数器,但你从不做任何其他事情(我们可以看到)计数器如何更新?