我正在尝试制作一个常规按钮,其功能类似于切换按钮,但我遇到了一些问题。我是Java和OOP的新手,所以要温柔。
首先我的按钮会说“按我”。当按下我的按钮时,我想要在按钮上显示倒计时,当它倒计时时,我希望能够再次按下它以取消倒计时并恢复到其原始状态。截至目前,我可以按下按钮,启动倒计时并取消它,但我无法弄清楚如何使按钮恢复到起始状态“按我”(如果再次按下,倒计时)将重新开始,它可以再次取消)。
我尝试使用切换按钮,但我觉得我非常接近于让它工作。有任何想法吗?这是我现在正在使用的代码:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new CountDownTimer(4000, 1000) {
@Override
public void onFinish() {
button.setText("SENT");
}
@Override
public void onTick(long sec) {
button.setText("CANCEL (" + sec / 1000 + ")");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
cancel();
}
});
}
}.start();
}
});
答案 0 :(得分:1)
我想我会保留一个boolean
标志,看看计时器是否正在运行。类似的东西(未经测试)
button.setOnClickListener(new OnClickListener() {
private boolean running = false;
private CountDownTimer timer;
@Override
public void onClick(View v) {
if(!running)
{
running = true;
timer = new CountDownTimer(4000, 1000) {
@Override
public void onFinish() {
button.setText("SENT");
}
@Override
public void onTick(long sec) {
button.setText("CANCEL (" + sec / 1000 + ")");
}
}.start();
}
else
{
timer.cancel();
button.setText("Press Me");
running = false;
}
}
});
答案 1 :(得分:0)
如果我正确理解了问题:倒数计时器正在显示,当您取消时,您希望计时器停止并且按钮恢复为“按我”
CountDownTimer有一个“功能”,它不能从OnTick取消自己...我知道这很疯狂。
幸运的是,有人在课堂上写下了替代课程。 https://gist.github.com/737759
我在我的一个应用程序中使用此类。只需在项目中创建一个名为“CountDownTimer”的类。删除“android.os.CountDownTimer”的导入,它应该可以工作。
编辑:重新调整答案
我注意到你有2个点击按钮。
我建议如下:
1)创建一个名为“isCounting”的布尔值 2)在您的Activities onCreate方法中将“isCounting”设置为FALSE 3)单独创建CountDownTimer
CountDownTimer cdt;
// setup countdown timer
cdt = new CountDownTimer(intMilli, 1000)
{
@Override
public void onFinish()
{
//your code
}
@Override
public void onTick(long millisUntilFinished)
{
//your code
}
};
4)在按钮的onClick中选中“isCounting”
if (isCounting == FALSE)
{
cdt.start();
isCounting = TRUE;
}
else
{
cdt.cancel();
isCounting = FALSE;
button.setText("PRESS ME");
}