倒数计时器return布尔值

Countdown timer return the value of boolean

我有一个倒数计时器,我想在调用 class 时得到 return 值,这是我的 class CountdownTimer

  public class CountDownTimerActivity extends CountDownTimer {
    public  boolean finish = false;
    public CountDownTimerActivity(long startTime, long interval) {
        super(startTime, interval);
    }

    @Override
    public  void onFinish()
    {
    finishTime(true);

    }

    @Override
    public void onTick(long millisUntilFinished) {
        finishTime(false);
       Log.e("TESTINg","" + millisUntilFinished/1000);
    }

    public boolean finishTime(boolean finish) {

        return finish;
    }
}

这是我的来电倒计时

  CountDownTimerActivity countdowntimer  = new CountDownTimerActivity(5000,1000);
        countdowntimer.start();
        if(// I DONT KNOW WHAT WILL I PUT HERE)
        {
            Log.e("Testing", "OK na");
        }

谁能帮帮我?谢谢

我认为它不起作用,因为您从未在代码中将变量 finish 设置为 true。您必须将 onFinish 方法中的代码更改为 finish = true 然后在 onTick 方法中放入一个逻辑来检查它是否已经完成然后调用 onFinish() 方法;

我认为您无法 return 来自 CountDownTimer 的值。 理想情况下,您应该启动计时器并在回调方法中实现您必须执行的操作 -

abstract void   onFinish()
//Callback fired when the time is up.

abstract void   onTick(long millisUntilFinished)
//Callback fired on regular interval.

实施示例 https://androidcookbook.com/Recipe.seam;jsessionid=DF53064E03C7505C4EBF727E56E0728E?recipeId=1205

CountDownTimer 是一个非常简单的 class,你不需要为它制作一个完整的 class,你可以在你的调用者 class 上创建它,这样你可以在完成时调用回调函数。

public class MyActivity extends Activity{

    //Other methods and variables

    CountDownTimer countdowntimer  = new CountDownTimer(5000,1000){
        @Override
        public void onFinish() {
            //Call the callback from your activity
        }

        @Override
        public void onTick(long millisUntilFinished) {
            Log.e("TESTINg","" + millisUntilFinished/1000);
        }
    };

}

如果由于某种原因你必须在不同的 class 中创建它,那么在那个 class 中你必须创建一个接口,你的 activity 必须在你的完成方法调用中实现接口侦听器的方法。 像片段一样:

我想你想要完成的是定时器到期时的回调?如果是这样,你必须自己考虑定时器 运行 ,然后在完成时调用另一个方法。例如:

public class Main extends Activity 
    {
    private MyCountDownTimer myCountDownTimer;

    @Override
    public void onCreate(Bundle savedInstanceState){
        myCountDownTimer = new MyCountDownTimer(5000, 1000);
        myCountDownTimer.start();
    }

    public void finished(){
        Log.e("Testing", "OK na");
    }

    public class MyCountDownTimer extends CountDownTimer {
        public MyCountDownTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        @Override
        public void onFinish() { 
            finished();
        }

        @Override
        public void onTick(long millisUntilFinished) {
           Log.e("TESTINg","" + millisUntilFinished/1000);
        }
    }
}

查看此 link 了解更多 details/example: https://androidcookbook.com/Recipe.seam;?recipeId=1205

编辑以制作可用于其他活动的通用 class,我会做这样的事情。

创建一个 MyCountDownTimer class 在它自己的文件中看起来像这样:

    public class MyCountDownTimer extends CountDownTimer {
        private MyCallback myCallback;

        public MyCountDownTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        public Interface MyCallBack{
            void callback();
        }

        @Override
        public void onFinish() { 
            myCallback.callback();
        }

        @Override
        public void onTick(long millisUntilFinished) {
           Log.e("TESTINg","" + millisUntilFinished/1000);
        }

        public void setMyCallback(MyCallback myCallback){
            this.myCallback = myCallback;
        }
    }

然后,在您的每个活动中,您将像这样实现新界面:

public class Main extends Activity implements MyCountDownTimer.MyCallback 
{
    private MyCountDownTimer myCountDownTimer;

    @Override
    public void callback(){
        Log.e("Testing", "OK na");
    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        myCountDownTimer = new MyCountDownTimer(5000, 1000);
        myCountDownTimer.setMyCallback(this); //will use the callback method in this class which can be different for each activity
        myCountDownTimer.start();
    }
}