Как использовать CountDownTimer в Android? - PullRequest
0 голосов
/ 18 марта 2012

Ниже приведена программа, которую я написал, чтобы использовать таймер обратного отсчета, но когда программа запускается в эмуляторе, я получаю сообщение об ошибке, сообщающее "Извините. Приложение AndroidTestTimer (процесс android.test.timer) неожиданно остановилось. Пожалуйста,повторите попытку " с помощью кнопки принудительного закрытия.

Ниже приведен код.

package android.test.timer;

import android.os.CountDownTimer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AndroidTestTimerActivity extends Activity {
    /** Called when the activity is first created. */
    TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
        TextView tv = (TextView)findViewById(R.id.time_textview);
        tv.setText("Default!");
        MyTimer tim = new MyTimer(6000,1000);
        tim.start();
    }

    public class MyTimer extends CountDownTimer {
        public MyTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
            // TODO Auto-generated constructor stub
            tv.setText("changed by the constructor");
        }

        @Override
        public void onFinish() {
            // TODO Auto-generated method stub
            tv.setText("changed by the onFinish");
        }

        @Override
        public void onTick(long millisUntilFinished) {
            // TODO Auto-generated method stub
            tv.setText("time: " + millisUntilFinished);
        }

    }
}

1 Ответ

3 голосов
/ 18 марта 2012

Вы повторно объявили переменную tv в onCreate(), поэтому tv в действии не инициализировано.
Правильный код:

tv = (TextView) findViewById(R.id.time_textview);

PS Add logcat outputпод вопросом в следующий раз.«Извините, приложение неожиданно остановлено», ничего не говорится об ошибке.

...