【问题标题】:Display a Toast when a button is clicked frequently频繁单击按钮时显示 Toast
【发布时间】:2018-01-15 22:48:47
【问题描述】:

我是 Android 开发新手,所以请原谅这个问题。

所以我有一个按钮,当点击它时,它会调用一个名为btnDelay(btnName)的方法。

在那个方法里面是这行代码:

private void btnDelay(final Button btn){
    btn.setEnabled(false);

    /*if (counter == 0){
        counter++;
    }*/

    Timer buttonTimer = new Timer();
    buttonTimer.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    btn.setEnabled(true);
                }
            });
        }
    }, 5000);
}

这将禁用按钮 5 秒

现在我想做的是当用户再次点击按钮并且5秒没有完成时,会显示一个Toast,说明用户的动作太频繁了。

有什么办法可以做到这一点吗?我正在考虑使用一个计数器来计算用户单击该特定按钮的次数,并在 TimerTask 完成 5 秒后重置为 0。但是有没有更简单的方法来做到这一点?谢谢。

【问题讨论】:

  • 不会调用该方法,因为禁用的按钮无法监听事件。
  • @NongthonbamTonthoi 哦!我错过了那个微小的细节。谢谢你的澄清。那么解决这个问题的更好/最好的方法是什么?

标签: java android


【解决方案1】:

如果您的按钮被禁用,它将不会触发 onClick 事件。因此,不要禁用它,而是将颜色设置为灰色或其他颜色,使其看起来禁用,然后在您的 onClick 按钮处理程序中:

if(enabled){
  btnDelay();
} 
else {
  sendAToast();
}

然后在btnDelay() 中设置enabled = false(如果需要,可以将颜色设置为灰色),然后在run() 中设置enabled = true。 也不要忘记在你的班级顶部private boolean enabled = true :)

【讨论】:

  • 是的。我很抱歉错过了那个非常微小的细节。感谢您提及并澄清我的错误。以后肯定不会再错过了;)顺便说一句,我会尝试这种方法。谢谢!
  • 像魅力一样工作!
【解决方案2】:

您应该为按钮状态声明一个布尔变量。因为如果你写btn.setEnabled(false);buttonClickEvent五秒内都无法触发。

boolean btnState = true;
private void btnDelay(final Button btn){
    if (btnState){
        Timer buttonTimer = new Timer();
        buttonTimer.schedule(new TimerTask() {

            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        btnState = false;
                    }
                });
            }
        }, 5000);
    }else{
        Toast.makeText(this, "your_message", Toast.LENGTH_SHORT).show();
    }
}

【讨论】:

  • 与 Mike Speed 的答案相同,但要简单得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 2021-04-07
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多