Android 防止button多次点击总结

    long lastClick ;
    public void onClick(View v) {  
        //大于一秒方个通过  
        if (System.currentTimeMillis() - lastClick <= 1000)  
        {  
            showToast("点那么快干什么!!!");  
            return;  
        }  
        lastClick = System.currentTimeMillis();  
    }  

一种常见的写法,记录前后两次点击事件的时间,然后判断一个时间差是否在给定的LimitTime内,如果是则不能点击,

否则,可点击.


这种方式有缺点,多个button,快速切换点击,控制效果不是很好,所以我试着用Android的 handler来控制button点击事件。


 

 //new 一个handler,用于消息处理

  Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(msg.what == GOTO_DIALOG){
                //调用button点击事件处理方法goToDialog
                goToDialog((Integer)msg.obj);
            }
        }
    };

 @Override
    public void onClick(View v) {

       //发送handler消息之前,清空该消息
        handler.removeMessages(GOTO_DIALOG);

       //绑定一个msg,内容为接下来需要的button的ID,
        Message msg = Message.obtain();
        msg.what = GOTO_DIALOG;
        msg.obj = v.getId();

        //发送消息间隔1秒
        handler.sendMessageDelayed(msg, 1000);

    }

    private void goToDialog(int id){

        //多个botton

           switch (id){

            case R.id.btn_back:

            ......

            break;

           case R.id.btn_sumbit:

            ......

            break;

      }
使用上面handler处理后,就不再担心多个button之间切换,乱点了

  注意:记得用完handler后销毁


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值