繁体   English   中英

如何从倒数计时器中获取价值并展示给烤面包

[英]how to get value from countdowntimer and display into toast

我有一个从1到9999的倒数计时器,如果我单击“开始”按钮,计数将开始,但是如果单击“停止”按钮,我需要从倒数中获取当前值并在吐司中显示该值,但如果我单击“停止”按钮,则无法停止倒数,请帮助我

 private CountDownTimer countDownTimer;
         private boolean timerHasStarted = false;
         private Button startB;
         public TextView ;


         private final long startTime = 9999 * 1;

         private final long interval = 1 *1 ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

              startB = (Button) this.findViewById(R.id.button);
              startB.setOnClickListener(this);
              text = (TextView) this.findViewById(R.id.timer);
              countDownTimer = new MyCountDownTimer(startTime, interval);
              text.setText(text.getText() + String.valueOf(startTime / 1));
    }

    public void onClick(View v) {
          if (!timerHasStarted) {
           countDownTimer.start();
           timerHasStarted = true;
           startB.setText("STOP");
          } else {
           /*countDownTimer.cancel();
           timerHasStarted = false;
           startB.setText("RESTART");*/
          }
    }

    public class MyCountDownTimer extends CountDownTimer {

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

        }

        @Override
        public void onFinish() {

            //text.setText("Time's up!");
            countDownTimer.start();

        }
        @Override
        public void onTick(long millisUntilFinished) {

             text.setText("" + millisUntilFinished / 1);

        }       
    }

谢谢

这是我的倒数计时器:

QuestionCountdownTimer

public class QuestionCountdownTimer extends CountDownTimer {

private TextView remainingTimeDisplay;
private Context context;

public QuestionCountdownTimer(Context context,long millisInFuture, long countDownInterval,TextView remainingTimeDisplay) {
   super(millisInFuture, countDownInterval);
    this.context = context;
   this.remainingTimeDisplay = remainingTimeDisplay;
}

@Override
public void onTick(long millisUntilFinished) {
   long millis = millisUntilFinished;
   String hms = String.format("%02d:%02d",
           TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
           TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
   remainingTimeDisplay.setText(hms);
}

@Override
public void onFinish() {
   Toast.makeText(context,"COUNTDOWN FINISH :)",Toast.LENGTH_SHORT).show();
}

}

注意: TextView剩余时间显示

missingTimeDisplay.setText(hms); 我用它来使用TextView显示剩余时间

在这里,我称计时器为:

//Start Quiz timer
QuestionCountdownTimer timer = new QuestionCountdownTimer(this,10000, 1000, remainingTimeDisplay);
    timer.start();

-first参数:此-我将其用于上下文以显示Toast消息

-second参数:10000-总时间(10秒)

-第三参数:1000-倒数间隔(1秒)

-last参数:实时显示剩余时间

经过测试和工作

像这样创建您的CountDownTimer:

public class MyCountDownTimer extends CountDownTimer
    {
        private long timePassed = 0;

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

        @Override
        public void onFinish()
        {
            //text.setText("Time's up!");
            countDownTimer.start();
        }

        @Override
        public void onTick(long millisUntilFinished)
        {
            timePassed++;
            text.setText("" + millisUntilFinished / 1);
        }

        public long getTimePassed()
        {
            return timePassed;
        }
    }

在onClick上,只需执行以下操作:

((MyCoundDownTimer) countDownTimer).getTimePassed();

检索时间并将其设置为textview文本。

您应该使用处理程序

private Handler tickResponseHandler = new Handler() {
    public void handleMessage(Message msg) {
        int time = msg.what;
        //make toast or do what you want
    }
}

并将其传递给MyCountDownTimer构造函数

private Handler handler;

public MyCountDownTimer(long startTime, long interval, Handler handler) {
        super(startTime, interval);
        this.handler = handler;
}

并发送消息

@Override
public void onTick(long millisUntilFinished) {
    text.setText("" + millisUntilFinished / 1);
    Message msg = new Message();
    msg.what = millisUntilFinished/1;
    handler.sendMessage(msg);
}     

这就是您需要做的全部:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM