我想在我的应用程序中做一个选项,如果你单击一个按钮,计数器将启动并计数(如0 ++)并显示该数字,直到用户停止它为止,到目前为止我有这个非工作代码< / p>
if (v == btn3) {
counter = 0;
scoreText.setBackgroundColor(Color.RED);
new Thread(new Runnable() {
public void run() {
while (counter < 1000 ) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
counter++;
}
}
}).start();
scoreText.setText(Integer.toString(counter));
}
目前,当我按下按钮时,文本字段仅变为红色并设置为0,但我无法计算
答案 0 :(得分:0)
在我看来,setText方法是在循环之外。它可以在循环结束后更新文本视图。把它移到循环内的某个地方。
答案 1 :(得分:0)
有一个名为CountDownTimer的类,它提供了一些有用的功能。特别是它提供了一个onTick()方法,您可以使用该方法以所需的间隔更新文本字段。
您需要创建一个无限计数的CountDownTimer,您可以通过在其onFinish()方法中重新启动计时器来完成此操作,就像在this问题中一样。但是如果你将CountDownTimer设置得足够长,你可能永远不需要重新启动它。
像这样......
new CountDownTimer(<REALLY_BIG_NUMBER>, 500) {
int counter = 0;
public void onTick(long millisUntilFinished) {
scoreText.setText(counter++);
}
public void onFinish() {
start();
}
}.start();
答案 2 :(得分:0)
这应该按照您的需要工作
if (v == btn3) {
counter = 0;
scoreText.setBackgroundColor(Color.RED);
new Thread(new Runnable() {
public void run() {
while (counter < 1000 ) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
scoreText.setText(Integer.toString(counter));
}
});
counter++;
}
}
}).start();
}