【问题标题】:Android: Fast button presses results in multiple instances of intentAndroid:快速按下按钮会导致多个意图实例
【发布时间】:2012-03-16 02:01:00
【问题描述】:

目前我遇到了一个错误,如果用户快速点击一个按钮,该按钮所附加的意图将多次触发,从而导致需要再次追溯该意图的堆栈。我怎样才能避免这种情况或补救这种情况?

谢谢 ~k

这是在 onClickListener 内部。我在这里设置布尔值,然后在过程结束时取消设置。

        if(!isDating)
        {
            intent.setClass(context, EventDate.class);
            isDating = true;
            ((TabGroupActivity)
            context).startChildActivity("EventDate",intent);
        }

【问题讨论】:

  • 好吧,你可以定义一个布尔变量,比如isClicked,当点击时使isClciked为true,直到你完成点击过程,将其设置为false。
  • “按钮附加到的意图” - 这是什么意思?您不能将 Intent 附加到 Button - 这没有任何意义。
  • 你能输入代码来启动意图吗?

标签: java android user-interface android-intent


【解决方案1】:

尝试为类似的意图设置标志

intent.setFlags(FLAG_ACTIVITY_BROUGHT_TO_FRONT);

您还可以通过应用程序部分的 AndroidManifest.xml 文件设置此标志。比上述方法更喜欢这种方法。

Updating launchMode using the Manifest file

希望这能解决您的问题。

【讨论】:

    【解决方案2】:

    如果我为我的 QA 提交的这个 bug 有一毛钱,如果不是百万富翁,我会非常富有:P 能做的只有这么多。根据您的实现,您可以尝试一些事情。

    1. 如前所述,使用布尔值。单击它后将其设置为 true,如果再次单击该按钮,则检查此布尔值。完成后将其设置为 false。

    2. 使用进度对话框,以防它是一个很长的活动,例如在显示之前在下一个活动中接收数据。这也给用户一个提示,有些事情正在发生,他不必担心。

    【讨论】:

      【解决方案3】:

      使用

      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      

      解决问题

      【讨论】:

        【解决方案4】:

        其实我找到了更好的解决方案!

        通过设置 onClickListener(null);然后在 onResume 上重新创建它,它绕过了必须使用标志等等。

        !k

        【讨论】:

        • 感谢所有帮助!
        • 真的吗?即使有几个按钮?这样不会乱吗?
        猜你喜欢
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        • 1970-01-01
        相关资源
        最近更新 更多