为什么这个程序只显示了textview中i = 4的最后一个值。
Public class MainActivity extendsActivity {
TextView counter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counter = (TextView) findViewById(R.id.TV_counter);
Thread t = new Thread() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
for (int i = 0; i < 5; i++) {
try {
counter.setText("" + i);
System.out.println("Value of i= " + i);
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}
};
t.start();
}
}
答案 0 :(得分:0)
sleep(100)
睡眠不是很长。您可能只是没有注意到它正在快速更新字段。尝试将睡眠时间增加到1000
答案 1 :(得分:0)
我不完全确定你要做什么,但我认为这就是你所需要的。此外,正如其他人所说,你可能想要增加睡眠时间,只是为了确保它的工作。 1000毫秒呢?
Thread t = new Thread()
{
public void run()
{
for(int i=0;i<5;i++)
{
runOnUiThread(new Runnable()
{
public void run()
{
try
{
counter.setText(""+i );
System.out.println("Value of i= "+i);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
});
sleep(100);
}
});
}
编辑: 另外,您应该知道,在您当前的实现中,正在UI线程上执行sleep()方法,这是(我猜)你不想要的。在此实现中,睡眠正在runnable上运行。
答案 2 :(得分:0)
增加睡眠时间,以便人眼可以看到变化。
sleep(2000);
(或)连接计数器的现有文本
counter.setText(counter.getText()+i);
但你检查了你的控制台吗?因为它必须有 值i = 1到4
答案 3 :(得分:-1)
您应该发布在MainThread上执行的setText,它很简单:
counter.getHandler().post(new Runnable(){public void run(){counter.setText("" + i);}});