我有一个倒数计时器,只要单击生成表达式按钮就会运行。在计时器内部我已经使它工作,所以当计时器运行时它会自动点击按钮,以便显示下一个表达式。单击该按钮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);
}
}
答案 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,并且还需要使用不同的方式执行整个处理代码。