Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 倒计时赢了';停不下来_Java_Android_Arrays_Xml_Timer - Fatal编程技术网

Java 倒计时赢了';停不下来

Java 倒计时赢了';停不下来,java,android,arrays,xml,timer,Java,Android,Arrays,Xml,Timer,请告诉我,我是android的初学者,我正在尝试为我的测验添加一个倒计时,倒计时功能很好,当我在时间限制内回答所有问题时,我得到的结果如下: 更正答案:14 错误答案:16 得分:14/30 如果我没有赶上时间,我会得到这样的结果: 更正答案:14 错误答案:0 得分:14/30 这在我看来是正确的,因为在这种情况下,答案不是错的,而是没有答案的 但如果我恰好在时间结束前回答了所有问题。我得到了我想要的结果,但计数没有停止,并一直运行到0,然后在0显示: 更正答案:0 错误答案:0 得分:0/3

请告诉我,我是android的初学者,我正在尝试为我的测验添加一个倒计时,倒计时功能很好,当我在时间限制内回答所有问题时,我得到的结果如下: 更正答案:14 错误答案:16 得分:14/30

如果我没有赶上时间,我会得到这样的结果: 更正答案:14 错误答案:0 得分:14/30

这在我看来是正确的,因为在这种情况下,答案不是错的,而是没有答案的

但如果我恰好在时间结束前回答了所有问题。我得到了我想要的结果,但计数没有停止,并一直运行到0,然后在0显示: 更正答案:0 错误答案:0 得分:0/30

以下是计时器的代码:

mCountDownTimer=新的倒计时(90000,1000){

虽然我也在其他地方调用了意图部分来引导我进入得分页面
有谁能给我一个提示或帮助吗?

我认为你执行
onFinish
的逻辑是错误的。
onFinish
你的计时器完成后被呼叫,或者你呼叫
取消

您应该将
mCountDownTimer.cancel();
移动到最后一个问题(可能),它将自动调用
onFinish


在您当前的代码中,只有当计时器已完成时,您的计时器才会被取消,因为您在
onFinish
中调用了
cancel
,请使用以下代码

// Global variable. Put
private boolean isRunning = true;

while(isRunning)
{
    textViewtimer.setText("Seconds remaining: " + millisUntilFinished / 1000);
    if((millisUntilFinished / 1000) <= 0)
        isRunning = false;
}
//全局变量。Put
私有布尔值isRunning=true;
同时(正在运行)
{
textViewtimer.setText(“剩余秒数:+millisuntillfinished/1000”);

如果((毫微秒/1000)谢谢你,先生,正如你所说,我刚刚移动了mCountDownTimer.cancel到最后一个问题,现在看来它工作得很好。非常感谢你的代码,但我刚刚移动了mCountDownTimer.cancel到我的最后一个问题,正如Blaze Tama建议的,现在它工作得很好,但非常感谢你,我也会保留你给我的代码
// Global variable. Put
private boolean isRunning = true;

while(isRunning)
{
    textViewtimer.setText("Seconds remaining: " + millisUntilFinished / 1000);
    if((millisUntilFinished / 1000) <= 0)
        isRunning = false;
}