2017-05-19 15 views
0

我正在做一個簡單的測驗應用程序,包括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);   

      }                  

     });                   

    } 

回答

1

您需要爲倒數計時器存儲一個變量,以便它可以被調用和取消。

final CountDownTimer timer = new CountDownTimer(millisInFuture,countDownInterval){......} 
timer.start(); 

bNext.setOnClickListener(new View.OnClickListener() {      

    @Override                
    public void onClick(View v) {             
    timer.cancel(); 
      ......... 
    }                  

});                   
+0

不錯的一位先生。謝謝! –

0

而不是創建它作爲new CountDownTimer直接, 首先定義像CountDownTimer cd

一個全局變量,然後徘徊無論你願意,你可以使用CD的方法。

相關問題