2011-11-11 32 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. 实现回调机制