Android 防止多次点击事件

恐怕大家都会遇到这样的问题,一个点击事件多次触发,导致,同样的内容提交了多次,或者说弹出多个页面...

 

下面是简单的方案,大家可以试一试

原理很简单,当我们第一次点击的时候,把按钮变成不可点击状态。

然后设置 5s 的定时器来恢复点击事件。

方法一:

    public static void disabledView(final View v) {
        v.setClickable(false);
    // 延迟5秒,恢复点击事件
new Handler().postDelayed(new Runnable() { @Override public void run() { v.setClickable(true); } }, 5000); }

 

方法二:

public class BaseActivity extends Activity {    
    
    protected boolean isDestroy;
    //防止重复点击设置的标志,涉及到点击打开其他Activity时,将该标志设置为false,在onResume事件中设置为true
    private boolean clickable=true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        isDestroy=false;
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        isDestroy=true;
        
    }

    @Override
    protected void onResume() {
        super.onResume();
        //每次返回界面时,将点击标志设置为可点击
        clickable=true;
    }

    /**
     * 当前是否可以点击
     * @return
     */
    protected boolean isClickable(){
        return  clickable;
    }

    /**
     * 锁定点击
     */
    protected void lockClick(){
        clickable=false;
    }



    @Override
    public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
        if(isClickable()) {
            lockClick();
            super.startActivityForResult(intent, requestCode,options);
        }
    }
}

 

posted @ 2015-12-02 21:43  丶贰九  阅读(5255)  评论(2编辑  收藏  举报