我正在尝试使用Timer Class每秒更新TextView内容。以下是我的代码。问题是该值增加2而不是1.请告诉我问题是什么。
public class MainActivity extends ActionBarActivity {
public void onButtonClick (View view) {
// calendar
OnDateSetListener datelistener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int Year, int monthOfYear, int dayOfMonth) {
....
reScheduleTimer(); // starting the timer
}
};
}
public void reScheduleTimer(){
timer = new Timer();
timerTask = new myTimerTask();
timer.schedule(timerTask, 1000, 1000);
}
public class myTimerTask extends TimerTask{
@Override
public void run() {
elapsed = elapsed + 1;
runOnUiThread(new Runnable(){
public void run() {
TextView seconds = (TextView) findViewById(R.id.seconds);
seconds.setText("seconds so far "+elapsed);
}
});
}
}
}
答案 0 :(得分:0)
在timerTask
的开头检查reScheduleTimer
是否为空并且如果它不为空则取消它是不会有害的。
在reScheduleTimer的开头:
if(timerTask != null) {
timerTask.cancel();
}
答案 1 :(得分:0)
我仍然不知道变量如何增加超过1,但我通过在每次调用函数时读取系统时钟并显示它来解决问题。