5

Android中,如果用户真的很快地多次按下按钮,则该onClick事件会被触发多次......这是有道理的。

如果该onClick方法启动一个新的,用户可以多次Activity打开同一个,每个实例都将堆积在堆栈的顶部。ActivityActivity

我通常禁用onClick方法内的按钮(与按钮相关联),并在使用 a Handlerand几秒钟后再次启用它postDelay

我真的不喜欢以这种方式这样做,所以有没有另一种以更干净的方式解决这个问题的方法?

4

3 回答 3

1

在活动情况下,您还可以为您的 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;
        }
    }
});
于 2012-12-17T10:48:15.023 回答
0

清洁方式:

单击按钮后,如果您要调用的东西是null,请调用它,否则不要。

于 2012-12-17T10:45:54.190 回答
0

为 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);
}
于 2013-08-03T15:40:09.980 回答