Android 计时器减少文本视图中显示的时间,以分钟和秒为单位

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

我想用定时器每秒减少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);
使用以下代码将时间字符串转换为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,那么计时器将再次以数据库值启动。这在这里有点难以回答。你可以再问一个问题,让我知道。无论如何,经验法则是在
应用程序
类中放置
时间
当前时间
变量,因此它们的值会发生全局变化。事实上,我今天已经超过了限制。请告诉我怎么做。我能行