当前位置: 首页 > 面试题库 >

Android计时器更新textview(UI)

苍宝
2023-03-14
问题内容

我正在使用计时器来创建秒表。计时器通过增加整数值来工作。然后,我想通过不断更新textview在活动中显示此值。

这是我在服务中尝试更新活动的textview的代码:

protected static void startTimer() {
    isTimerRunning = true; 
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            elapsedTime += 1; //increase every sec
            StopWatch.time.setText(formatIntoHHMMSS(elapsedTime)); //this is the textview
        }
    }, 0, 1000);
}

我在错误的线程中更新UI时遇到某种错误。

如何调整我的代码以完成不断更新textview的任务?


问题答案:
protected static void startTimer() {
    isTimerRunning = true; 
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            elapsedTime += 1; //increase every sec
            mHandler.obtainMessage(1).sendToTarget();
        }
    }, 0, 1000);
}

public Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        StopWatch.time.setText(formatIntoHHMMSS(elapsedTime)); //this is the textview
    }
};

上面的代码可以工作…

注意:必须在您的主线程中创建处理程序,以便您可以修改UI内容。



 类似资料:
  • 我试图通过调用setText()方法更新TextView对象的文本。我直接向它提供了一个字符串值,但我无法让它在运行在仿真器上的应用程序的UI上更新。 这是发生在一个片段上(在Android Studio上创建带有简单activity的项目时自动生成的片段之一) 关于我目前的情况,有几点: > 我尝试用runOnUiThread“pattern”调用setText()方法,但没有成功。 我检查了T

  • 我尝试创建一个自定义的时间流逝时间,一旦我按住音量键,它就会启动计时器,并假设时间必须在我松开键后停止,但我松开键时遇到问题,计时器仍在移动。请告诉我我错过了什么谢谢 公共布尔onKeyDown(int-keyCode,KeyEvent-event){if((keyCode==KeyEvent.keyCode_-VOLUME_-DOWN

  • 问题内容: 我有主要的仓库管理人员,他在其中将整数值设置为textview,现在我希望在调用onResume()时更新此值…但是当我添加我的一点onResume()代码时 到该应用程序,我什至无法启动它,LogCat变得非常疯狂,并且没有记录任何活动超过半秒钟。有什么办法吗?提前致谢 问题答案: 我将从添加: 我还将删除该内容: from ,因为每次都被调用,所以也被调用。

  • 问题内容: 在MainActivity中,我有一个TextView:textV1。我在MainActivity中也有一个更新该textview的方法: 在BroadcasrReceiver中,我需要在MainActivity中更新textV1中的文本。 如何才能做到这一点?BroadcastReceiver从服务运行。我无法更改此代码。我可以从onReceive()访问和更改MainActivit

  • layout-widget.xml: background.xml: 来自DbAdapter.java的getTextViewData(): 有人知道我的代码中缺少了什么吗?

  • 问题内容: 我在这段代码上遇到了麻烦。 我正在使用一个随机数启动一个计时器,并且我想每秒倒数一次更新JLabel。但是我还没有弄清楚该怎么做,因为计时器触发的唯一侦听器位于它的末尾(我知道)。 这是代码: 问题答案: 我不太了解您为什么使用随机数的问题,但以下是一些观察结果: 我想每秒钟更新一次带有倒计时的JLabel。 然后,您需要将计时器设置为每秒触发一次。因此,计时器的参数是1000,而不是