Android按钮停止采取新动作utill onClick()块执行完成

时间:2012-07-17 10:40:58

标签: android button

    b.setOnClickListener(new OnClickListener()) {
    public void onClick(View arg0) {
        try{
         Thread.sleep(10000);
       }catch(Exception e){}
     }   
  });

在上面的代码中,我不想在Therad工作之前再采取任何Button动作。目前,当我再次按下应用程序要求强制关闭或等待。我不想要那个而不喜欢对这个按钮采取任何行动。

需要帮助。感谢

3 个答案:

答案 0 :(得分:4)

添加全局布尔值,并在单击它时将其设置为true。点击按钮检查它。如果设置然后返回,否则运行线程。在线程的末尾再次将其设置为false。

boolean clicked = false;

b.setOnClickListener(new OnClickListener()) {
    public void onClick(View arg0) {
        if( clicked )
            return;
        try{
         clicked = true;
         Thread.sleep(10000);
       }catch(Exception e){}
     }   
  });
当你从睡梦中回来时,

设置clicked = false。

答案 1 :(得分:0)

最好将AsyncTask用于您的作品。并根据您的要求使用get() AsyncTask方法。

假设按钮点击execute() AsyncTask并在等待get()的{​​{1}}之后停用按钮,该按钮将在完成AsyncTask和结果时返回AsyncTask再次启用您的按钮。因此,您可以在活动中避免Result

答案 2 :(得分:0)

在处理上一个点击时,至少有两种阻止进一步点击的方法:

1)在开头按下按钮,然后在onClick结束时重新启用:

b.setOnClickListener(new OnClickListener()) {
    public void onClick(View arg0) {
        b.setEnabled(false);

        //do your stuff

        b.setEnabled(true);
    }   
});

2)在onClick的开头设置一个标志,并在最后清除它:

(类级)

boolean isInOnClick = false;

然后

b.setOnClickListener(new OnClickListener()) {
    public void onClick(View arg0) {
        if(!isInOnClick) {
            isInOnClick = true;

            //do your stuff

            isInOnClick = false;
        }
    }   
});