2011-11-11 68 views
2

我創建了自己的類來擴展CountDownTimer。由於我經常使用它,我想在它自己的java文件中擁有該類。作爲獨立類的Android CountDownTimer

但是,我不知道計時器類與創建它的類進行通信的方式。

示例:class A的textView顯示一些秒數。所以,A類創建計時器。

  • 如何告訴CountDownTimer中的onTick()方法使用當前時間更新我的 textView?
  • 我的A班怎麼知道計時器結束的時間?

我確定這是一個簡單的答案,我對線程,處理程序,監聽器以及其他任何嚮導都知之甚少。

回答

1

這應該是非常類似使用普通的倒數計時器 - 剛剛替補子類的常規定時器實例。此外,將活動傳遞給構造函數,以便它可以執行任何更新顯示所需的操作。

E.g.

mCountDownTimer = MyCountDownTimer(totalMsecs, callInterval, this).start(); 

凡MyCountownTime會有這樣的方法:

 public void onTick(long millisUntilFinished) { 

      float fraction = millisUntilFinished/(float) totalMsecs; 

         // myActivity is passed in the constructor 
      mMillisUntilFinished = millisUntilFinished; 

      // progress bar is based on scale of 1 to 100; 
      mActivity.progressBar.setProgress((int) (fraction * 100)); 

     } 

     public void onFinish() { 
       mMillisUntilFinished = 0; 
      handleTimeOut(); 
     } 

這是假設mActivity在構造函數。我改變了代碼,假設調用活動作爲一個變量在定時器構造函數中傳遞並設置爲定時器類的成員。

+0

好的,我明白你在說什麼了。現在,當定時器結束時,我該如何調用駐留在調用類中的方法? – Allen

+0

有什麼想法?我發現你可以訪問已傳入的活動的變量,但是如何調用屬於該活動的方法? – Allen

+0

@艾倫你有沒有想過如何做到這一點? –

0

,你可以:在它(如TextView更新,或者整個活動)

  1. 傳遞變量
  2. 使用它的靜態(定時器類可以直接訪問它們),讓班裏的變量
  3. 實現回調機制