我正在做一個簡單的測驗應用程序,包括10個問題,每個問題10秒倒數計時器。當每個問題的答案正確乘以CountDownTimer方法的剩餘時間時,評分就起作用,因此它將是:score = answer * timeLeft;我成功地從CountDownTimer中獲得了timeLeft的值。我把時間安排好了,它會自動回答下一個問題。問題是,當我選擇正確的答案,並點擊下一個按鈕,它成功取得了timeLeft值並乘以1(每個正確的答案將是1分),但倒數計時器仍然一直持續到結束,所以當我已經移動到通過點擊下一個按鈕的另一個問題,在上一個問題上的時間仍在運行,並且當它不幸地移到上一個問題時,尚未結束。我怎麼能從setOnClickListener中的CountDownTimer方法調用cancel()?我可以在setOnClickListener內的前一個方法上調用'cancel()'嗎?
public void setTimer() {
//Initialize a new CountDownTimer instance
new CountDownTimer(millisInFuture,countDownInterval){
public void onTick(long millisUntilFinished){
//do something in every tick
//Display the remaining seconds to app interface
//1 second = 1000 milliseconds
cDown.setText("" + millisUntilFinished/1000);
timeLeft = millisUntilFinished/1000;
}
public void onFinish(){
//Do something when count down finished
cDown.setText("NEXT!");
Intent intent = new Intent(TestActivity1.this,TestActivity2.class);
intent.putExtra("score", score);
startActivity(intent);
finish();
timeLeft = 0;
}
}.start();
bNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancel();
timeLeft = millisUntilFinished;
Intent intent = new Intent(TestActivity1.this,TestActivity2.class);
intent.putExtra("score", score);
startActivity(intent);
finish();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
});
}
不錯的一位先生。謝謝! –