gpt4 book ai didi

java - 单击按钮即可结束 CountDownTimer

转载 作者:行者123 更新时间:2023-12-01 19:01:01 28 4
gpt4 key购买 nike

所以我有一个“开始”按钮 1,当单击它时,它会从 EditText1 获取文本,然后调用 CountDownTimer 来调用一个方法,该方法通过其参数从 EditText1 传递文本,并每 10 秒在 TextView1 中显示一些内容。但是,如果您决定在 EditText1 中键入其他内容并再次单击开始按钮 1,它将再次调用 CountDownTimer。

在这种情况下,将有 2 个“doThis”CountDownTimer 变量,执行 doThis.cancel() 只会取消第二个“doThis”CountDownTimer 变量。我想知道如何解决这个问题。

[编辑文本1]

[开始按钮1][TextView1][结束按钮1]
[开始按钮 2] [TextView2] [结束按钮 2]

CountDownTimer doThis;

doThis = new CountDownTimer(10000,10000)
{
@Override
public void onTick(long millisUntilFinished) {

}

@Override
public void onFinish() {
start();
TextView text = (TextView)findViewById(R.id.text);
try {
Date date = new Date(System.currentTimeMillis());
text.setText(myMethod(variableFromEditText1));
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();

最佳答案

如果您希望同时拥有多个计时器和关联的按钮/ TextView ,我建议您将它们保存在列表中。您需要“存储”计时器 CountDownTimer cdt = new CountDownTimer [...] 。我什至会制作一个包装器来包含开始/结束按钮、 TextView 和计时器本身。像这样:

class MyTimer {

Button start;
Button end;
TextView text;
CountDownTimer cdt;

// add here all required getters/setters and a constructor as needed
// the constructor of this wrapper can take details about the buttons location, text view location, and countdown amounts etc. or set them defaults as deemed necessary



}

然后在 MyTimer 中,您可以将启动/停止/重置的所有逻辑放入具有好名称的方法中,这些方法由注册的事件处理程序的按钮调用。

然后获得您想要的任意数量的 MyTimers 的列表。 List<MyTimer> myTimers = new ArrayList<>();

如果您想添加更多计时器并允许您配置和管理所需的一组计时器,此列表将帮助您跟踪您拥有的计时器数量。

关于java - 单击按钮即可结束 CountDownTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59638730/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com