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