为什么我的应用中的倒计时器不会停止?

时间:2014-02-23 11:53:21

标签: android timer

我有一个倒数计时器,只要单击生成表达式按钮就会运行。在计时器内部我已经使它工作,所以当计时器运行时它会自动点击按钮,以便显示下一个表达式。单击该按钮10次后,它应该开始一个新的活动。但我遇到的问题是当新活动开始时它会继续开始相同的活动。所以我希望定时器在单击按钮10次后立即停止。我已经尝试countDownTimer.cancel();在点击10次点击后立即停止计时器,但它似乎无效。

这是添加计时器代码的地方:

public void generate_Clicked(View v){  // When Generate button is clicked

    if(gencount <10){
        if (!timerHasStarted) {
            countDownTimer.start();
            timeText.setText(timeText.getText() + String.valueOf(startTime/1000));
            timerHasStarted = true;
        } 
        else {
        countDownTimer.cancel();
        timerHasStarted = false;

        }


        // Fetch your random question 
        String Rquestion = multiArray[ar.get(gencount)][0];
        displayExpression.setText(Rquestion);
        displayAnswer.setText("");
        setAnswer.setText("?");
        setHints.setText("");

        count =0;
        gencount++;

        }else{
            // countDownTimer.cancel(); //This doesn't seem to work
            Intent i = new Intent(getApplicationContext(),Score.class);
            startActivity(i);
            ar.clear();

        }

}   //End of generate_Clicked.

下面是计时器代码:

public class MyCountDownTimer extends CountDownTimer {
    public MyCountDownTimer(long startTime, long interval) {
        super(startTime, interval);
    }

    @Override
    public void onFinish() {
        timeText.setText("Time's up!");
        Button buttonGenerate = (Button) findViewById(R.id.random_gen);
        buttonGenerate.performClick();
        countDownTimer.cancel();
        countDownTimer.start();
    }

    @Override
    public void onTick(long millisUntilFinished) {
        timeText.setText("" + millisUntilFinished/1000);
    }

}

1 个答案:

答案 0 :(得分:0)

CountDownTimer代码中似乎存在一个错误,阻止它停止。取消方法不起作用。

如果你谷歌,你会看到很多人描述同样的问题。

因此,如果您只在计数器正好为10时启动活动。

if (gencount==10) {
        // countDownTimer.cancel(); //This doesn't seem to work
        Intent i = new Intent(getApplicationContext(),Score.class);
        startActivity(i);
        ar.clear();
}

而不是} else {它应该工作。单击按钮时重置gencount,并且还需要使用不同的方式执行整个处理代码。