首页 > 解决方案 > Java trying to build a countdown but integer always returns 0

问题描述

I am trying to build a countdown such as "time left: 10 ".
To achieve this I tried using a TimerTask but my problem is that the integer jumps to 0 instantly instead of counting down from 15 as I want it to and I just can't figure out why.

Any help is appreciated.

Relevant code:

public class QuizActivity extends AppCompatActivity {

private int verbleibendeZeit = 15;

private void countdown() {
        countdownText.setVisibility(View.VISIBLE);
        final Timer progessTimer = new Timer();
        final TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                while (verbleibendeZeit > 0) {
                    verbleibendeZeit--;
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        countdownText.setText("Zeit übrig: " + verbleibendeZeit);
                    }
                });
                if (verbleibendeZeit == 0) {
                    progessTimer.cancel();
                    countdownText.setVisibility(View.INVISIBLE);
                }
            }
        };

        progessTimer.schedule(timerTask, 0, 1000);
    }

标签: javaandroid-studiotimercountdowntimertask

解决方案


您的 while 循环是问题所在:

while (verbleibendeZeit > 0) {
    verbleibendeZeit--;
}

将其更改为:

if (verbleibendeZeit > 0) {
    verbleibendeZeit=verbleibendeZeit-1;
}

推荐阅读