更新计时器的时间

时间:2011-10-04 14:26:30

标签: android

我有一个天文台表。应该显示时间。当我启动计时器时,时间总是相同的,但它应该更新

通话:

                Log.e("XXX","OnClick");
                String[] array = clock.getText().toString().split(":");
                int ms = (Integer.valueOf(array[0])*60 + Integer.valueOf(array[1]))*60000;
                Log.e("XXX",String.valueOf(ms));
                MyTimer counter = new MyTimer(ms, 1000, Timer.this,clock);

                counter.start();

计时器:

public class MyTimer extends CountDownTimer {
    private Context con;
    private Chronometer clock;

    public MyTimer(long millisInFuture, long countDownInterval, Context context, Chronometer clock) {
        super(millisInFuture, countDownInterval);
        this.con = context;
        this.clock= clock;
        // TODO Auto-generated constructor stub
    }


    @Override
    public void onTick(long millisUntilFinished) {

        int seconds = (int) (millisUntilFinished / 1000) % 60 ;
        int minutes = (int) ((millisUntilFinished / (1000*60)) % 60);
        int hours   = (int) ((millisUntilFinished / (1000*60*60)) % 24);
        clock.setText( String.format("%02d:%02d:%02d", hours,minutes,seconds));
        Log.e("Timer", String.valueOf(millisUntilFinished));

    }

问题在于计时器中的时间总是相同的。和日志(计时器)也 不要出现。是否刷新UI太快了?

1 个答案:

答案 0 :(得分:0)

我对将您的上下文和视图作为扩展类的参数传递并不是很有信心。也许你应该尝试改编你的代码(并摆脱你的MyTimer类)?

Log.e("XXX","OnClick");
String[] array = clock.getText().toString().split(":");
int ms = (Integer.valueOf(array[0])*60 + Integer.valueOf(array[1]))*60000;
Log.e("XXX",String.valueOf(ms));

new CountDownTimer(ms,1000){
    @Override
    public void onTick(long millisUntilFinished) {

        int seconds = (int) (millisUntilFinished / 1000) % 60 ;
        int minutes = (int) ((millisUntilFinished / (1000*60)) % 60);
        int hours   = (int) ((millisUntilFinished / (1000*60*60)) % 24);
        clock.setText( String.format("%02d:%02d:%02d", hours,minutes,seconds));
        Log.e("Timer", String.valueOf(millisUntilFinished));

    }
}.start();