Java Android应用程序中的切换按钮
我正在尝试制作一个功能类似于切换按钮的常规按钮,但我遇到了一些问题。我不熟悉Java和OOP,所以要温柔 首先,我的按钮会说“按我”。当我的按钮被按下时,我希望按钮上显示一个倒计时,当它倒计时时,我希望能够再次按下它以取消倒计时并恢复到其原始状态。到目前为止,我可以按下按钮,启动倒计时并取消它,但我不知道如何使按钮恢复到“按下我”的开始外观(如果再次按下,倒计时将重新开始,并且可以再次取消) 我试着用一个切换按钮,但我觉得我很快就能让它工作了。有什么想法吗?下面是我正在使用的代码:Java Android应用程序中的切换按钮,java,android,button,toggle,Java,Android,Button,Toggle,我正在尝试制作一个功能类似于切换按钮的常规按钮,但我遇到了一些问题。我不熟悉Java和OOP,所以要温柔 首先,我的按钮会说“按我”。当我的按钮被按下时,我希望按钮上显示一个倒计时,当它倒计时时,我希望能够再次按下它以取消倒计时并恢复到其原始状态。到目前为止,我可以按下按钮,启动倒计时并取消它,但我不知道如何使按钮恢复到“按下我”的开始外观(如果再次按下,倒计时将重新开始,并且可以再次取消) 我试着用一个切换按钮,但我觉得我很快就能让它工作了。有什么想法吗?下面是我正在使用的代码: bu
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();
}
});
如果我正确理解问题:倒计时计时器正在显示,当您取消时,您希望计时器停止,按钮恢复为“按我” 倒计时有一个“功能”,它不能取消自己从点击。。。我知道这是胡说八道 幸运的是,有人在课堂上写了一篇替换文章。 我在我的一个应用程序中使用这个类。只需在项目中创建一个名为“倒计时”的类。删除“android.os.CountDownTimer”的导入,它应该可以工作 编辑:重新调整答案 我注意到你有两个按钮 我建议如下: 1) 创建一个名为“isCounting”的布尔值 2) 在Activities onCreate方法中将“isCounting”设置为FALSE 3) 分别创建倒计时
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”
我想我应该保留一个
布尔值
标志,看看计时器是否正在运行。类似的东西(未测试)
好的,太好了。我添加了这个类,它工作正常。但是我该如何用这个来恢复按钮呢?我真的很难弄明白。你能(在你的onClick里)按一下按钮吗;取消后();但这难道不会改变按钮的文本,不允许再次按下按钮吗?这意味着它不会开始倒计时。只是修改了我的答案,因为我注意到你有两个onclick听众
if (isCounting == FALSE)
{
cdt.start();
isCounting = TRUE;
}
else
{
cdt.cancel();
isCounting = FALSE;
button.setText("PRESS ME");
}
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;
}
}
});