【问题标题】:Timer decrease time displayed in textview with minutes and seconds计时器减少时间以分钟和秒显示在文本视图中
【发布时间】:2020-08-31 05:16:12
【问题描述】:

我想使用计时器每秒减少 15:00(在 textview 中设置)。 IE; 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);
}

【问题讨论】:

标签: android time timer


【解决方案1】:

您的代码背后的逻辑是错误的。使用下面的代码:

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;
}

【讨论】:

  • int 时间 = 15*60;这里我的值是 15:00,所以这不能初始化为 int。收到 java.lang.NumberFormatException 错误:Invalid int: "15:00"
  • 编辑了答案并添加了一种方法来转换您的时间String。无论如何,您应该尝试解决小问题。
  • 是的。谢谢你上面的代码运行良好。但如果我按回并再次开始活动,则计时器再次从数据库值开始。
  • 这里有点难回答。你可以问另一个问题,让我知道。无论如何,经验法则是将 timecurrentTime 变量放在您的 Application 类中,以便它们的值全局变化。
  • 实际上我今天已经超出了我的限制。请告诉我它是如何完成的。我可以管理它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多