Android 防止多次点击事件

a 夏天 提交于 2020-02-02 01:00:17

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

 

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

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

然后设置 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);
        }
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!