【问题标题】:Android CountDownTimer as a Separate ClassAndroid CountDownTimer 作为一个单独的类
【发布时间】:2011-11-11 22:59:36
【问题描述】:

我创建了自己的类来扩展 CountDownTimer。由于我经常使用它,所以我想将该类放在它自己的 java 文件中。

但是,我不知道计时器类与创建它的类通信的方法。

示例:A 类有一个 textView,它显示一些秒数。因此,A 类创建了计时器。

  • 如何告诉 CountDownTimer 中的 onTick() 方法更新我的 textView 与当前时间?
  • 我的 A 班如何知道计时器何时结束?

我敢肯定这是一个简单的答案,我只是对线程、处理程序、侦听器以及你们这些巫师正在制作的任何其他东西知之甚少。

【问题讨论】:

    标签: java android class timer listener


    【解决方案1】:

    这应该与使用常规倒数计时器非常相似 - 只需将您的子类替换为常规计时器实例即可。此外,将活动传递给构造函数,以便它可以执行更新显示所需的任何操作。

    例如

        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 是在构造函数中传递的。我更改了代码,假设调用活动在计时器构造函数中作为变量传递,并设置为计时器类的成员。

    【讨论】:

    • 好的,我明白你在说什么。现在,当计时器结束时,我如何调用驻留在调用类中的方法?
    • 有什么想法吗?我看到您可以访问传入的活动的变量,但是您将如何调用属于该活动的方法?
    • @Allen 你有没有想过如何做到这一点?
    • 是的。在 MyCountDownTimer 的构造函数中,我没有将“活动活动”作为参数,而是让构造函数接受一个接口。像 TimerListener 监听器之类的东西。该接口由 Activity 实现,因此倒计时计时器可以调用 Activity 接口中列出的任何方法。
    【解决方案2】:

    你可以:

    1. 将变量传递给它(例如要更新的TextView,或整个活动)
    2. 将使用它的类中的变量设为静态(定时器类可以直接访问它们)
    3. 实现回调机制

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多