java - 安卓按钮及其工作原理

标签 java android onclick android-button

我知道如何禁用按钮以防止它被点击两次。但是,如果我想在它安全后立即再次启用它,我可以在 onclick 中调用 setenabled(true) 做这样的事情吗?按钮是在调用 setenabled(false) 后立即禁用,还是仅在 onclick 函数完成后才禁用?

   button.setOnclickListener(new View.onClickListener(){

          public void onClick(View v) {
                button.setEnabled(false);
                /// do stuff
                button.setEnabled(true);
          }
    });

最佳答案

为什么不简化一下呢?

使用 boolean 作为标志来检查进程何时运行。如果它正在运行,请在前面的过程未完成之前不要运行它。

下面的代码示例将确保当任务运行时,onClickListener() 不会触发。无需担心禁用然后再次启用它。

编辑:

经过长时间的讨论(在评论中),与 Zabri .只是为了好玩,我尝试了我最初发布的解决方案。事实证明,他毕竟正确。 :-(

我在最初的解决方案中错了(未经测试,但对我来说糟糕)。所以是时候总结并发布一个有效且测试的解决方案了。

完全支持 Zabri 指出代码中的明显缺陷。 :-)

例如(测试代码):

boolean taskRunning = false;
button1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if (taskRunning == false) {

            // TOGGLE THE boolean HERE TO INDICATE RUNNING
            taskRunning = true;

            // / do stuff

            // TOGGLE THE boolean HERE TO INDICATE TASK COMPLETED
            taskRunning = false;

        }

    }
});

如前所述,这是未经测试的代码。我只是在这里打出来的。

关于java - 安卓按钮及其工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272612/

相关文章:

java - 如何在 CollapsingToolbarLayout 内设置 Toolbar 的重力?

java - 使用 NFC TAG 检测我的应用程序的问题

javascript - 尝试让图像在单击时移动,但是 .click 甚至只在第一次单击时触发

android - DialogFragment onClick 监听器不适用于 ImageButton

java - 如何让数据出现在Kura Web UI上?

java - Spring方法需要创建新的匿名实例并不允许使用现有实例

java - 在 javafx 2.0 中创建未修饰的阶段

java - 了解 UI 线程

android - 如何从 google places API 获取所有评分最高的热门地点

javascript - 为什么我的 PHP AJAX onclick 函数并不总是触发?