Android for循环计数不正确

时间:2016-04-22 12:03:33

标签: java android xml timer

所以我有3个计时器。对于第一个我只想出现一次,因为它就像准备好计时器一样。

对于第二个和第三个,我希望出现用户想要的次数。在计时器开始之前,用户必须通过按+或 - 按钮选择次数,然后设置TextView的值。

完成了这段代码:

int counter = 0;

       homeScreenPlus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dodajInterval();
                    homeScreenMinus.setEnabled(counter > 0);
                }
            });

            homeScreenMinus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    oduzmiInterval();
                    homeScreenMinus.setEnabled(counter > 0);
                }
            });


        }

        private void oduzmiInterval() {
            counter--;
            brojIntervala.setText(Integer.toString(counter));
        }

        private void dodajInterval() {
            counter++;
            brojIntervala.setText(Integer.toString(counter));
        }

以下是计时器的代码:

 public void homeScreenStart(View view) {
        linearniLayoutSetup.setVisibility(View.GONE);


        CountDownTimer firstCountDown = new CountDownTimer(seekBarTimerDelay.getProgress() * 1000 + 100, 1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                updateTimer((int) millisUntilFinished / 1000);
            }

            @Override
            public void onFinish() {
                textViewTimerVrijeme.setText("00:00");
                countDownTimerTrci();

                karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_trci));
                textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_trci));
            }
        }.start();
    }

    public void countDownTimerTrci() {

        for (int i = 0; i < counter; i++) {
            toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_trci));
            CountDownTimer secondCountDown = new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000) {

                @Override
                public void onTick(long millisUntilFinished) {
                    updateTimer((int) millisUntilFinished / 1000);
                }

                @Override
                public void onFinish() {
                    textViewTimerVrijeme.setText("00:00");
                    karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj));
                    imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet);
                    textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj));
                    toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj));
                    CountDownTimer thirdCountDown = new CountDownTimer(seekBarIntervaliNiskogIntenziteta.getProgress() * 1000 + 100, 1000) {

                        @Override
                        public void onTick(long millisUntilFinished) {
                            updateTimer((int) millisUntilFinished / 1000);
                        }

                        @Override
                        public void onFinish() {
                            textViewTimerVrijeme.setText("00:00");
                            countDownTimerTrci();
                        }
                    }.start();
                }
            }.start();
        }
    }

正如您所看到的,它是一种按下按钮时调用的方法,我不会首先只显示一次计时器,这就是为什么我没有将它包括在内foor loop。

第一个计时器只显示一次并且有效,但其他两个计时器一直重复,直到我关闭应用程序。

有人能告诉我问题在哪里吗?

1 个答案:

答案 0 :(得分:1)

试试这个,用我的

替换你的countDownTimerTrci方法

public void countDownTimerTrci(){

<pre id="out"></pre>