我有一个包含一些值的表,我想每10秒更新一次UI(值)。我想向用户展示一个倒数计时器,以了解将要发生的事情...... 但它崩溃了。 我用于此的代码如下所示:
tv2_r7= (TextView) this.findViewById(R.id.textView2_r7);
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
int i = 10;
public void run() {
tv2_r7.setText(String.valueOf(i));
i--;
if (i< 0)
timer.cancel();
}
}, 0, 1000);
当我有System.out.println(i--);
而不是tv2_r7.setText(String.valueOf(i));
i--;
答案 0 :(得分:2)
您已更新计时器中的UI值,这是错误的。你需要使用
那里的方法。runOnUIThread
tv2_r7 = (TextView) this.findViewById(R.id.textView2_r7);
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
int i = 10;
public void run()
{
runOnUIThread(new Runnable()
{
@Override
public void run()
{
tv2_r7.setText(String.valueOf(i));
}
});
i--;
if (i < 0)
timer.cancel();
}
}, 0, 1000);
}