Java 我能打电话给';取消();在setOnClickListener内部的上一个方法上?
我正在制作一个简单的测验应用程序,由10个问题组成,每个问题都有10秒的倒计时。当每个问题的答案正确乘以倒数计时方法的剩余时间时,计分有效,因此它将是:分数=答案*时间间隔;我成功地从倒计时中获取了timeLeft值。当我设定的时间结束时,它会自动意念到下一个问题。问题是,当我选择正确答案并点击“下一步”按钮时,它成功地获取了时间限制值并将其乘以1(每个正确答案将为1分),但倒计时计时器仍会一直持续到结束,因此当我通过点击“下一步”按钮转到另一个问题时,上一个问题的时间仍在运行,不幸的是,当时间结束时,它移到了时间尚未结束的前一个问题。如何从setOnClickListener中的CountDownTimer方法调用cancel()Java 我能打电话给';取消();在setOnClickListener内部的上一个方法上?,java,android,Java,Android,我正在制作一个简单的测验应用程序,由10个问题组成,每个问题都有10秒的倒计时。当每个问题的答案正确乘以倒数计时方法的剩余时间时,计分有效,因此它将是:分数=答案*时间间隔;我成功地从倒计时中获取了timeLeft值。当我设定的时间结束时,它会自动意念到下一个问题。问题是,当我选择正确答案并点击“下一步”按钮时,它成功地获取了时间限制值并将其乘以1(每个正确答案将为1分),但倒计时计时器仍会一直持续到结束,因此当我通过点击“下一步”按钮转到另一个问题时,上一个问题的时间仍在运行,不幸的是,当时间
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);
}
});
}
您需要为倒计时计时器存储一个变量,以便调用和取消它
final CountDownTimer timer = new CountDownTimer(millisInFuture,countDownInterval){......}
timer.start();
bNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.cancel();
.........
}
});
而不是直接将其创建为新的倒计时, 首先定义一个全局变量,如
倒计时cd
然后你可以在任何地方使用cd的方法。好的,先生。非常感谢。