我有一个天文台表。应该显示时间。当我启动计时器时,时间总是相同的,但它应该更新
通话:
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太快了?
答案 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();