我试图在按下按钮后每隔五秒钟更新一次TextView,但是当运行应用程序时,TextView将只显示正在运行的循环的最后一个值。
以下是我的尝试:
private Runnable textUpdate = new Runnable() {
public void run() {
textOutput = (TextView)findViewById(R.id.textOutput);
textOutput.setText("Reading Number " + (rIndex+1) + "\n");
textOutput.append(sensorTime[rIndex] + "\n");
textOutput.append("Value: " + rPoint.getValue() + "\n");
}
};
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mHandler = new Handler();
TextView textOutput = (TextView) findViewById(R.id.textOutput);
textOutput.setText("Simulation output:\n");
Button button03 = (Button) findViewById(R.id.button03);
button03.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
for(int i = 0; i < index; i++) {
rIndex = i;
rPoint = dp[i];
mHandler.postDelayed(textUpdate, 5000);
}
}
});
}
无法理解为什么只有我尝试输出的信息的最后一个值才会显示在TextView中。
感谢任何帮助。
答案 0 :(得分:2)
我看到的问题出在最后一行代码中:
mHandler.postDelayed(textUpdate, 5000);
您将以5000毫秒的速度发布所有更新,每个更新的时间间隔为毫秒(与手机可以循环的速度一样快)。
请改为尝试:
mHandler.postDelayed(textUpdate, i * 5000);
答案 1 :(得分:0)
你可以再次制作可运行的帖子。
private Runnable textUpdate = new Runnable() {
public void run() {
textOutput = (TextView)findViewById(R.id.textOutput);
textOutput.setText("Reading Number " + (rIndex+1) + "\n");
textOutput.append(sensorTime[rIndex] + "\n");
textOutput.append("Value: " + rPoint.getValue() + "\n");
mHandler.postDelayed(this, 5000);
}
};
然后删除onPause
中的所有邮件