每秒更改 TextView 中的文本

and*_*est 4 java android

我正在尝试实现如下功能:按下按钮并每 1 秒在 textView 中显示从 1 到 10 的数字。

private void startCounting() {

    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            increaseNumber();
        }
    };

    timer.scheduleAtFixedRate(task, 0, 1000);

}

private void increaseNumber() {
    number++;
    tvFragment.setText(number);
}
Run Code Online (Sandbox Code Playgroud)

我明白了CalledFromWrongThreadException ,我知道这是什么,我们无法从后台线程更新 UI 元素,但问题是如何修复它?怎么做 ?

Ser*_*rev 5

您可以使用 Handler 类。

private Handler handler = new Handler();

private void startCounting() {
    handler.post(run);
}

private Runnable run = new Runnable() {
  @Override
  public void run() {
    number++;
    tvFragment.setText(number);
    handler.postDelayed(this, 1000);
  }
};
Run Code Online (Sandbox Code Playgroud)