gpt4 book ai didi

android - 处理快速点击按钮

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:07 25 4
gpt4 key购买 nike

我有一个带有 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(...) 调用。

我在摩托罗拉 Droid 手机上的 Android 2.1 中看到了这种行为。我们在市场上收到了 4 份崩溃报告,表明这种情况偶尔会发生在人们身上。

根据我们的 OnClickListeners 所做的,这会导致各种破坏。我们如何保证阻塞对话框在第一次点击后真正阻止输入?

最佳答案

Romain Guy 确认这确实是 Android 中的一个错误:“只有当用户设法在 < 125 毫秒内按下按钮两次时才会发生。我相信我们在 Froyo 中修复了这个可能的错误。”

我们将使用“玻璃 Pane ”模式来解决旧操作系统上的错误。也就是说,我们将用一个不可见的 View 覆盖屏幕。在第一次点击事件之后,我们将使 View “可见”,以便它拦截后续的触摸事件。

仅仅通过一个按钮来阻止更多事件是不够的。您需要阻止整个 Activity 的所有后续事件,直到关闭对话框、恢复 Activity 等,此时您再次使玻璃 Pane “不可见”。

如果这不起作用,我们将不得不忍受这一点并更好地容忍意外的额外事件。

关于android - 处理快速点击按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2886407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com