如何为Android创建自动计数代码

时间:2016-09-05 16:30:35

标签: java android

我想在我的应用程序中做一个选项,如果你单击一个按钮,计数器将启动并计数(如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,但我无法计算

3 个答案:

答案 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();
}