【问题标题】:Start timer on button click单击按钮时启动计时器
【发布时间】:2015-07-27 04:31:50
【问题描述】:

我是 Android 编程新手,但我了解 Java。 我的问题是,计时器在 Android 中是如何工作的?我读过最好使用处理程序。 我想要做的是,你点击一个按钮,计时器就会启动。到单击按钮的那一刻,我都清楚了,但是如何启动计时器?

【问题讨论】:

标签: android timer handler


【解决方案1】:

计时器在 Android 中是如何工作的?

你最好阅读Timer documentationCountDownTimer DocumentationHandler Documentation

到现在,当按钮被点击时,一切都为我清除了;但是,如何启动计时器?

如果我没有误解你的问题,当你说Timer 时,你指的是CounteDownTimer。所以,你应该有这样的东西:

(我已经写了一个示例代码。所以,你应该先理解它,然后你应该将它应用到你的代码中。)

添加Buttons

btn1 = (Button)findViewById(R.id.bt1);
btn2 = (Button)findViewById(R.id.bt2);

添加SetOnClickListener()

btn1.setOnClickListener(new OnClickListener() {
    @Override
        public void onClick(View arg0) {

    });
}

btn2.setOnClickListener(new OnClickListener() {
    @Override
        public void onClick(View arg0) {

    });
}

我的btn1 启动CountDownTimer,第二个停止并清除它。

现在,我用CountDownTimerTest 名称创建一个Inner Class

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

    @Override
    public void onFinish() {
        text.setText("Time's up!");
        timeElapsedView.setText("Time Elapsed: " + String.valueOf(startTime));
    }

    @Override
    public void onTick(long millisUntilFinished) {
        text.setText("Time remain:" + millisUntilFinished);
        timeElapsed = startTime - millisUntilFinished;
        timeElapsedView.setText("Time Elapsed: " + String.valueOf(timeElapsed));
    }
}

然后在我的btn1,我把这段代码(开始CountDownTimer):

countDownTimer.start();

在我的btn2 上,我输入了这个代码(停止/取消CountDownTimer):

countDownTimer.cancel();

现在,我希望您能了解CountDownTimer 的工作原理,如果您的问题与CountDownTimer 无关,请告诉我,我会尽快根据您的意愿更新我的答案。

编辑 - 只有一个 Button

要使用相同的Button,您可以这样做:

创建一个Boolean 变量为:

Boolean ButtonClicked = false;

然后,修改代码如下:

btn1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        if (!ButtonClicked)) {
            ButtonClicked = true;
            countDownTimer.start(); 
        } else {
            ButtonClicked = false;
            countDownTimer.cancel();
        }                       
    });
}

EDIT 2 获取点击了什么按钮

您可以像这样创建一个名为NumberButtonClickedint

int NumberButtonClicked = 0;

然后在每个Button 你必须这样做(示例):

btn1.setOnClickListener(new OnClickListener() {
    @Override
        public void onClick(View arg0) {
            NumberButtonClicked = 1;
    });
}

那么你知道如果你点击了btn1你的变量将是1。

【讨论】:

  • 好的,谢谢,但是它是如何用一个按钮工作的,所以你按下按钮,计时器就会运行到他结束?
  • 使用 Timer 时要小心,因为它不会在您离开活动时停止。如果在这种情况下更新视图,可能会导致 NPE。
  • 很好的综合答案。在不提供指导或答案的情况下对某人的第一个问题投反对票只是卑鄙的。
  • 感谢您的宝贵时间和出色的回答。
  • 如果对您有帮助必须将其标记为正确答案:)
猜你喜欢
  • 1970-01-01
  • 2019-01-29
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多