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);
        }
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM