使用CountDownTimer更新

时间:2018-08-11 14:28:55

标签: android timer countdowntimer

我有一个名为ShowingActivity的活动,它有一个名为answerNum的整数(为3、4、5、6或7)和一个名为SanswerList且具有answerNum大小的ArrayList,我在此活动中使用Countdowntimer显示单词,以及何时倒计时完成程序转到另一个活动。我的问题是我无法显示最后一个单词,例如,如果answerNum为3,则显示第一和第二个单词,但不显示第三个单词;或者如果answerNum为7,则不显示最后一个单词。第七名 我在ShowingActivity的onCreate中有这段代码:

 new CountDownTimer( answerNum * (answerNum*1000) , answerNum*1000)
    {
        int i=0;
        public void onTick(long millisUntilFinished) {
            tv1.setText(SanswerList.get(i));
            i++;
            if (i == SanswerList.size()) {
                onFinish();

            }
        }
        public void onFinish()
        {
            switch (answerNum)
            {
                case 3:
                    startActivity(new Intent(ShowingActivity.this,SedarseActivity.class));
                    finish();
                    break;
                case 4:
                    startActivity(new Intent(ShowingActivity.this,ChardarcharActivity.class));
                    finish();
                    break;
                case 5:
                    startActivity(new Intent(ShowingActivity.this,PanjdarpanjActivity.class));
                    finish();
                    break;
                case 6:
                    startActivity(new Intent(ShowingActivity.this,ShishdarActivity.class));
                    finish();
                    break;
                case 7:
                    startActivity(new Intent(ShowingActivity.this,HaftdarhaftActivity.class));
                    finish();
                    break;
            }
        }
    }.start();

如果您知道另一种方法,请说。

3 个答案:

答案 0 :(得分:0)

发生这种情况是因为onTick仅被调用answerNum - 1次。因此,我建议您将计时器设置为(answerNum + 1) * 1000时间。这将为您提供所需的东西

也不要从onTick()调用onFinish()。时间结束后会自动调用OnFinish

答案 1 :(得分:0)

将计数器增量放在IF语句的最后。

    int i=0;
    public void onTick(long millisUntilFinished) {
        tv1.setText(SanswerList.get(i));

        if (i == SanswerList.size()) {
            onFinish();

        }
     i++;
    }

应该可以。虽然我没有测试。

答案 2 :(得分:0)

我将语句更改为:

countDownTimer = new CountDownTimer( (answerNum+1)*(answerNum*1000)  ,  answerNum*1000  )

和:

if (i == SanswerList.size()) {
                onFinish();
            }
            tv1.setText(SanswerList.get(i));
            i++;

现在效果很好。