Android значение счетчика - PullRequest
0 голосов
/ 30 мая 2011

как я могу получить значение счетчика обратного отсчета?

Я пытался с 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. Разрешены только конвертируемые значения int или константы enum "

Таким образом, я изменил эту строку на switch ((int)millisUntilFinished/1000) { и изменил строки на case 8: и case 3:.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Я не знаю, что такое MyCount, но я вижу ошибку.Переменная secs имеет тип String, но вы пытаетесь сравнить ее с целыми числами (3000, 8000).Вы не можете использовать String переменные в блоке switch.Вам нужно использовать там целочисленную переменную или, если счетчик имеет тип String, использовать что-то вроде этого кода вместо блока switch:

if ("8000".equals(secs)) {
    tv3.setTextColor(Color.RED);
} else if ("3000".equals(secs)) {
    tv3.setTextColor(Color.BLUE);
}

Upd: Если вы используете подкласс класса CountDownTimer , вам нужно определить onTick() обратный вызов в классе MyCount, например:

@Override
public void onTick(long millisUntilFinished) {
    switch (millisUntilFinished) {
    case 8000:
        ...
        break;
    case 3000:
        ...
        break;
    }
}
0 голосов
/ 30 мая 2011

Как уже упоминалось в комментариях, что такое MyCount ()?

И, чтобы добавить к ответу Сергея:

Вы «запускаете» счетчик, но вы больше ничего с ним не делаете (что мы можем видеть) Как обновляется счетчик?

...