首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >避免按钮多次快速点击

避免按钮多次快速点击
EN

Stack Overflow用户
提问于 2013-05-14 10:55:04
回答 17查看 65K关注 0票数 96

我的应用程序有一个问题,如果用户快速地多次单击按钮,那么在我的按住按钮的对话框消失之前就会生成多个事件

我知道一个解决方案,当一个按钮被点击时,将一个布尔变量设置为一个标志,这样就可以在对话框关闭之前阻止以后的点击。然而,我有很多按钮,每次都要为每个按钮做这件事似乎有点过头了。在android中有没有其他方法(或者可能是更聪明的解决方案)来只允许每次点击按钮时生成事件操作?

更糟糕的是,在处理第一个操作之前,多个快速单击似乎会生成多个事件操作,所以如果我想禁用第一个单击处理方法中的按钮,队列中已经有现有的事件操作等待处理!

请帮帮忙谢谢

EN

Stack Overflow用户

发布于 2019-07-15 14:26:01

我的解决方案是,当我们从片段和活动中退出(销毁)时需要调用removeall

代码语言:javascript
复制
import android.os.Handler
import android.os.Looper
import java.util.concurrent.TimeUnit

    //single click handler
    object ClickHandler {

        //used to post messages and runnable objects
        private val mHandler = Handler(Looper.getMainLooper())

        //default delay is 250 millis
        @Synchronized
        fun handle(runnable: Runnable, delay: Long = TimeUnit.MILLISECONDS.toMillis(250)) {
            removeAll()//remove all before placing event so that only one event will execute at a time
            mHandler.postDelayed(runnable, delay)
        }

        @Synchronized
        fun removeAll() {
            mHandler.removeCallbacksAndMessages(null)
        }
    }
票数 0
EN
查看全部 17 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16534369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档