在Android
中,如果用户真的很快地多次按下按钮,则该onClick
事件会被触发多次......这是有道理的。
如果该onClick
方法启动一个新的,用户可以多次Activity
打开同一个,每个实例都将堆积在堆栈的顶部。Activity
Activity
我通常禁用onClick
方法内的按钮(与按钮相关联),并在使用 a Handler
and几秒钟后再次启用它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);
}