Android 计时器减少文本视图中显示的时间,以分钟和秒为单位
我想用定时器每秒减少15:00(在textview中设置)。即;14:59,14:58等等。。。 我试过了,但代码有问题。帮我解决这个问题Android 计时器减少文本视图中显示的时间,以分钟和秒为单位,android,time,timer,Android,Time,Timer,我想用定时器每秒减少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 Runn
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);
使用以下代码将时间字符串转换为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;
}
您面临什么问题?那里的
timeString
是什么?timeString是我从后端获取的字符串值。数值是15:00。我想每秒钟减少一次,请看这个“int time=15*60;这里我的值是15:00,因此无法初始化为int。获取错误为java.lang.NumberFormatException:无效int:“15:00”编辑了答案并添加了转换时间字符串的方法。不管怎样,你都应该尝试解决一些小问题。是的。谢谢你,上面的代码工作得很好。但是如果我按back并再次启动activity,那么计时器将再次以数据库值启动。这在这里有点难以回答。你可以再问一个问题,让我知道。无论如何,经验法则是在应用程序
类中放置时间
和当前时间
变量,因此它们的值会发生全局变化。事实上,我今天已经超过了限制。请告诉我怎么做。我能行