2014-11-10 4 views
-1

CountDownTimer는 멈추지 않을 것입니다

나는 안드로이드에서 초보자입니다. CountDownTimer를 잘 사용하고 CountDownTimer를 잘 사용하려고합니다. 제한된 시간 내에 모든 질문에 대답 할 때 다음과 같은 결과가 나옵니다. 14 개 잘못된 답변 : 는 답변을 보정 16 점수 : 30분의 14

경우 나는 이런 식으로 뭔가를 얻을 시간을 잡을 수 없습니다 : 14 개 잘못된 답변 : 0 점수 : 30분의 14 가 답변을 수정합니다

내 의견에 올바른 것은 그 경우 답변이 잘못되었지만 대답이 없기 때문입니다.

하지만 시간이 끝나기 전에 모든 질문에 답을하면 우연히 결과가 나타납니다. 카운트가 멈추지 않고 0까지 계속 실행되고 0은 이후에 표시됩니다. 답변 수정 : 0 오답 0 점수 :

mCountDownTimer = 새로운 CountDownTimer (90000, 1000) {

  public void onTick(long millisUntilFinished) { 
      textViewtimer.setText("Seconds remaining: " + millisUntilFinished/1000); 
     } 

     public void onFinish() {     
      marks = (correct+wrong)-wrong;    
       Intent resultintent = new Intent(getApplicationContext(), 
         ResultsActivity.class); 
       startActivity(resultintent); 
       mCountDownTimer.cancel(); 
     } 
      }.start(); 
: 여기

0/30 타이머에 대한 코드 10 내가 의도 한 부분을 다른 곳으로 불러서 점수 페이지로 안내 할 수도 있지만 누구든지 내게 힌트를 주거나 도움을 줄 수 있습니까?

답변

1

onFinish을 구현하는 논리가 잘못되었다고 생각합니다. onFinish() 이후에 또는으로 전화를 걸어 cancel라고 부릅니다.

mCountDownTimer.cancel();을 마지막 질문으로 이동해야하며 (아마도) onFinish이 자동으로 호출됩니다. 타이머가 다 된 경우에는 onFinishcancel이라고하기 때문에 현재 코드에서

, 당신의 타이머, 를 취소됩니다.

+0

정확하게 말씀 드렸듯이 마지막 질문에 mCountDownTimer.cancel을 옮겼습니다. 이제 제대로 작동합니다. 고맙습니다. –

+0

@AhmedMontasserRossafi 환영합니다. :) –

0

다음 코드를 사용하십시오.

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

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

이 코드를 이용해 주셔서 감사합니다.하지만 Blaze Tama가 제안한대로 마지막 질문에 mCountDownTimer.cancel을 옮겼습니다. 이제는 잘 작동하지만 고맙습니다. 나도 줬어 –

+0

당신은 환영합니다. –

관련 문제