我有一个带有OnClickListener的按钮。为了说明的目的,考虑一个按钮,显示模态对话框:处理按钮上的快速点击
public class SomeActivity ... {
protected void onCreate(Bundle state) {
super.onCreate(state);
findViewById(R.id.ok_button).setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
// This should block input
new AlertDialog.Builder(SomeActivity.this)
.setCancelable(true)
.show();
}
});
}
正常使用情况下,将显示警告对话框和块进一步输入。用户必须关闭对话框才能再次点击该按钮。
但是在对话框出现之前,有时会调用按钮的OnClickListener两次。您可以通过点击按钮非常快速地复制它。我通常必须在发生之前尝试多次,但迟早我会在对话框阻止输入之前触发多个onClick(...)调用。
我在Motorola Droid手机上的Android 2.1中看到了这种行为。我们在市场上收到了4次崩溃报告,表明偶尔会发生这种情况。
这取决于我们的OnClickListeners做什么,这会导致各种各样的混乱。我们如何确保阻止对话在第一次敲击后实际上阻止输入?
您是否尝试在onClick()外部创建AlertDialog,并在onClick()中调用show()? – jfpoilpret 2010-05-22 00:42:50