问题描述
我想使用计时器将秒数减少15:00(在textview中设置)。即; 14:59、14:58等等... 尝试进行处理,但是面临代码问题。帮我解决这个问题
Runnable updater;
void updateTime(final String timeString) {
mTimer = (TextViewMedium) findViewById(R.id.mTimer);
timerHandler = new Handler();
updater = new Runnable() {
@Override
public void run() {
mTimer.setText(timeString);
timerHandler.postDelayed(updater,1000);
Toast.makeText(JobRequestActivity.this,timeString,Toast.LENGTH_SHORT).show();
}
};
timerHandler.post(updater);
}
解决方法
代码背后的逻辑是错误的。使用以下代码:
int time;
int currentTime;
Handler timerHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
timerHandler.sendEmptyMessageDelayed(0,1000);
currentTime-=1;
int minutes = currentTime/60;
int seconds = currentTime%60;
String timeString = minutes+":"+seconds;
TextView mTimer = (TextViewMedium) findViewById(R.id.mTimer);
mTimer.setText(timeString);
Toast.makeText(JobRequestActivity.this,timeString,Toast.LENGTH_SHORT).show();
return false;
}
});
然后在代码中的任意位置调用timeHandler
:
time = toSeconds(yourTimeString);
currentTime = time;
timerHandler.sendEmptyMessage(0);
使用此代码将您的时间String转换为int:
private static int toSeconds(String s) {
String[] mTime = s.split(":");
int mins = Integer.parseInt(mTime[0]);
int seconds = Integer.parseInt(mTime[1]);
return mins*60 + seconds;
}