我正在尝试实现如下功能:按下按钮并每 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 元素,但问题是如何修复它?怎么做 ?
您可以使用 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)