这里有一个快速的问题,我有以下代码在大多数情况下工作,但我希望按钮在倒计时期间点击时返回到它的原始状态。有什么建议吗?
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();
}
});
在按下按钮之前,它会说“Push Me”。按下后,倒计时将开始,按钮的文本将每秒更改(CANCEL(3),CANCEL(2),CANCEL(1)),倒计时后按钮将其文本更新为“SENT”。如果在倒计时(onTick)期间按下该按钮,它将取消倒计时。我想知道如何让它恢复到“Push Me”状态,并且基本上允许它再次按下并开始新的倒计时。任何帮助将不胜感激!
答案 0 :(得分:2)
因此,您不应该在计时器内部使用新的onClickListener,因为这需要使用更多的内存,并且可能会导致意外的结果。相反,如果计时器打开,我建议使用布尔值,并使用现有按钮的onClickListener。如果您使用此计时器,请确保您的计时器已全局声明。以下是一个可行的示例:
button.setOnClickListener(new OnClickListener {
if(timerIsOn){
if(timer != null){
timer.cancel();
timerIsOn = false;
}
}
else{
timerIsOn = true;
//start the timer and do whatever else
}
}