我有一个名为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();
如果您知道另一种方法,请说。
答案 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++;
现在效果很好。