2011-11-11 11 views
2

CountDownTimerを拡張する独自のクラスを作成しました。私は頻繁に使用するので、私はそのクラスを独自のJavaファイルに入れたいと思っています。別のクラスとしてのAndroid CountDownTimer

しかし、タイマークラスがそれを作成したクラスと通信する方法はわかりません。

例:クラスAには、数秒間表示されるtextViewがあります。したがって、クラスAはタイマーを作成します。

  • はどのようCountDownTimerでonTick()メソッドは、現在の時間と私の のTextViewを更新するように指示することができますか?
  • 私のクラスAは、タイマーがいつ終了したかを知ることができますか?

私は、スレッド、ハンドラ、リスナー、その他のウィザードが料理をしていることについてはごくわずかです。

答えて

1

これは、通常のカウントダウンタイマーを使用して非常に類似していなければならないを実装します。また、アクティビティをコンストラクタに渡して、ディスプレイを更新するために必要な処理を実行できます。

など。これはmActivityがコンストラクタに渡されたと仮定し

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

:MyCountownTimeは、このようなメソッドを持っているでしょう

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

。呼び出し元のアクティビティがタイマーコンストラクタの変数として渡され、タイマークラスのメンバーとして設定されていると想定するようにコードを変更しました。

+0

よろしくお願いします。今、タイマーが終了したら、呼び出し側クラスにあるメソッドをどのように呼び出すのですか? – Allen

+0

アイデア?渡されたアクティビティの変数にアクセスすることができますが、そのアクティビティに属するメソッドをどのように呼び出すことができますか? – Allen

+0

@Allenこれを行う方法を今まで考え出しましたか? –

0

あなたは可能性:

  1. パス(TextViewのように更新する、または全体の活性)、それまでの変数
  2. (Timerクラスは、それらを直接アクセスすることができました)静的な、それを使用して、クラスの変数を作成します普通のタイマーインスタンスのためにあなたのサブクラスを置き換える -
  3. はコールバックメカニズム
関連する問題