2012-06-01 22 views
0

我在我的应用程序中有一个按钮,如果我点击它一次,一切正常,问题是当我继续快速点击它,我会得到一个ANR。这里是我的代码的一部分:在我的应用程序(Android)上点击按钮时得到了ANR

shareBtn.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      shareBtn.setClickable(false); 
      new UploadPicture().execute(urls);      
     } 
    }); 

private class UploadPicture extends AsyncTask<String, Void, Boolean> { 
     protected Boolean doInBackground(String... urls) { 

      Booblean boo = uploadPic(picPath); 

      return boo; 
     } 

     protected void onPostExecute(Boolean result) { 
      //do nothing 
     } 
    } 

1,我有shareBtn.setClickable(false); 2,我使用AsyncTask来完成将花费很长时间的事情。

任何人都可以给我一些建议?非常感谢!

+0

i'dont需要再次启用它。我也试过,我甚至尝试过shareBtn.setOnClickListener(null);但没有任何工作。 – flyingtree

+0

可以让我们知道两件事1什么是picPath 2 - 提供uploadPic函数............ –

+0

Concider发布完整的源代码。这将有助于解决问题。 –

回答

1

这与前期的Android 4.0版本

一个问题,如果你单击该按钮rapidly.it队列中的所有点击和处理它们一个接一个。 但你想要的是在第一次点击后忽略其余的点击次数。

编辑代码如下

boolean isClickable=true; 
shareBtn.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if(isClickable) 
      { 
      new UploadPicture().execute(urls);      
      } 
      isClickable=false; 
     } 
    }); 

private class UploadPicture extends AsyncTask<String, Void, Boolean> { 
     protected Boolean doInBackground(String... urls) { 

      Booblean boo = uploadPic(picPath); 

      return boo; 
     } 

     protected void onPostExecute(Boolean result) { 
      //do nothing 
     } 
    } 
+0

您需要确定何时将“isClickable”重置为“true”。我假设你可以在上传完成后执行此操作。 –

+0

是的,它只是包含应该看起来像什么的快照,他将不得不重置它。 –

相关问题