2014-02-23 35 views
0

我有一個倒計時器,只要點擊生成表達式按鈕就會運行。在定時器內部,我已經使其工作,所以當定時器運行時它會自動點擊按鈕,以便顯示下一個表達式。當按鈕被點擊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

要澄清,當您打開Score活動時,它會使用倒數重新打開活動? – ataulm

+1

我不確定,但你調用'countDownTimer.start();''onFinish' –

+0

是的,它重新打開分數活動。 – sumr

回答

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(); 
} 

,而不是}其他啓動活動{它應該工作。並在單擊該按鈕時重置gencount,並且還需要以不同方式執行整個處理代碼。

相關問題