在Android中,如果用户真的很快地多次按下按钮,则该onClick事件会被触发多次......这是有道理的。
如果该onClick方法启动一个新的,用户可以多次Activity打开同一个,每个实例都将堆积在堆栈的顶部。ActivityActivity
我通常禁用onClick方法内的按钮(与按钮相关联),并在使用 a Handlerand几秒钟后再次启用它postDelay。
我真的不喜欢以这种方式这样做,所以有没有另一种以更干净的方式解决这个问题的方法?
在活动情况下,您还可以为您的 Intent 传递额外的内容:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
或者
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
避免多次启动。
另一种方法是在管理单击以防止多次单击时使用虚拟布尔值。
更新示例:
boolean processingClick = false;
Button b = new Button();
b.setOnClickListener(new View.OnClickListener() {
    @Override public void onClick(View v) {
        if (!processingClick) {
            processingClick = true;
            //your code here
            processingClick = false;
        }
    }
});
    清洁方式:
单击按钮后,如果您要调用的东西是null,请调用它,否则不要。
为 Activity 中的所有按钮创建一个方法:
public void enableButtons(boolean doit){
    bXXX.setClickable(doit);
    ...
    ...
}
如果使用“实现 OnClickListener”
@Override
public void onClick(View view) {
    enableButtons(false);
    switch (view.getId()) {
        case R.id.xxx:
            doWhatYouWant();
            break;
        ...
        ...
    }
}
OnResume 再次激活您的按钮...
@Override
protected void onResume() {
    super.onResume();
    enableButtons(true);
}