Java 防止小部件在短时间内被多次单击

Java 防止小部件在短时间内被多次单击,java,android,android-widget,Java,Android,Android Widget,我有一个按钮,当点击时,会将画布保存到一个图像文件中,然后调用另一个活动。我遇到的问题是,通过测试,我注意到用户可以在调用活动之前连续单击按钮两次,从而导致写入两个文件 在另一项活动中,我还注意到微调器存在同样的问题。我连续单击它们两次,然后弹出两个列表视图,其中包含所有微调器项 我一直在用谷歌搜索,但运气不好。有没有简单的解决办法 谢谢。只要调用保存画布的方法,就可以得到一个简单的布尔值,如mClickBeingProcessed,将其设置为true。如果是真的,则不执行任何操作,否则保存画布

我有一个按钮,当点击时,会将画布保存到一个图像文件中,然后调用另一个活动。我遇到的问题是,通过测试,我注意到用户可以在调用活动之前连续单击按钮两次,从而导致写入两个文件

在另一项活动中,我还注意到微调器存在同样的问题。我连续单击它们两次,然后弹出两个列表视图,其中包含所有微调器项

我一直在用谷歌搜索,但运气不好。有没有简单的解决办法


谢谢。

只要调用保存画布的方法,就可以得到一个简单的布尔值,如mClickBeingProcessed,将其设置为true。如果是真的,则不执行任何操作,否则保存画布并调用其他活动。在方法(或其他处理)结束时,将其设置回false


另一个选项是存储最近一次单击的时间戳。如果单击发生在上一次单击的X时间内(无论您决定的值是多少,可能是1000毫秒),它将被忽略。

您可以有一个简单的布尔值,如mClickBeingProcessed,只要调用保存画布的方法,就可以将其设置为true。如果是真的,则不执行任何操作,否则保存画布并调用其他活动。在方法(或其他处理)结束时,将其设置回false


另一个选项是存储最近一次单击的时间戳。如果单击发生在上一次单击的X时间内(无论您决定的值是多少,可能是1000毫秒),它将被忽略。

只需显示一个进度对话框,直到处理继续
看看这个。


谢谢

只需显示一个进度对话框,直到处理开始
看看这个。


谢谢

事实证明,我必须实施这两个建议才能让它发挥作用+给你们每人一个

我使用了一个不确定的进度对话框和一个布尔值,如下所示:

    Button send = (Button) findViewById(R.id.send);
    send.setOnClickListener(new OnClickListener() {         
        @Override
        public void onClick(View v) {
            if (mAllowSave) {
                mAllowSave = false;
                showDialog(SAVING_DIALOG);
                mSaveFileThread = new SaveFileThread(handler);
                mSaveFileThread.start();
            }
        }
    });

事实证明,我必须实施这两个建议才能让它发挥作用+给你们每人一个

我使用了一个不确定的进度对话框和一个布尔值,如下所示:

    Button send = (Button) findViewById(R.id.send);
    send.setOnClickListener(new OnClickListener() {         
        @Override
        public void onClick(View v) {
            if (mAllowSave) {
                mAllowSave = false;
                showDialog(SAVING_DIALOG);
                mSaveFileThread = new SaveFileThread(handler);
                mSaveFileThread.start();
            }
        }
    });

在我看到问题的七分钟前,你是如何写下我想写的信息的+1:)这是我今天的突变体力量。当我排队的时候,他们都不喜欢控制时间,但是看到7分钟后的未来似乎没什么问题。我考虑过这一点,但这似乎是一种破解,而不是真正的解决方案。我们应该为每个小部件实现一个布尔值吗?这太荒谬了。这取决于小部件的功能。如果小部件的每个实例都具有完全相同的函数,则可以对所有实例使用单个布尔值。如果每个实例实际上是独立的,那么您可能会使用一个映射(widgetID:boolean)。在我看到问题的七分钟之前,您是如何编写我想要编写的消息的+1:)这是我今天的突变体力量。当我排队的时候,他们都不喜欢控制时间,但是看到7分钟后的未来似乎没什么问题。我考虑过这一点,但这似乎是一种破解,而不是真正的解决方案。我们应该为每个小部件实现一个布尔值吗?这太荒谬了。这取决于小部件的功能。如果小部件的每个实例都具有完全相同的函数,则可以对所有实例使用单个布尔值。如果每个实例实际上是独立的,那么可以使用映射(widgetID:boolean)。