计时器减少的时间以分钟和秒显示在textview中

问题描述

我想使用计时器将秒数减少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;
}