2013-01-20 108 views
0

我在AsyncTask類中未達到onPostExecuteAsyncTask onPostExecute不輸出

我調用任務這種方式,onClick裏面一個對話框:

new HelpfulTask().execute(passing); 

注:當我將鼠標懸停在上面的代碼中,我得到一個警告:

的通用陣列ArrayList是爲參數varargs 創建的。

我不確定這是什麼意思,如果這阻止我的任務甚至運行?

這裏是任務代碼:

protected class UnHelpfulTask extends 
      AsyncTask<ArrayList<String>, Void, ArrayList<String>> { 

     ArrayList<String> passed; 

     protected ArrayList<String> doInBackground(ArrayList<String>... passing) { 
      passed = passing[0]; 

      String url_select = "http://www.---.com/---/bad.php"; 

      ArrayList<NameValuePair> param = new ArrayList<NameValuePair>(); 
      param.add(new BasicNameValuePair("item", passed.get(0))); 
      param.add(new BasicNameValuePair("text", passed.get(1))); 
      param.add(new BasicNameValuePair("category", passed.get(2))); 

      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url_select); 

      try { 
       httpPost.setEntity(new UrlEncodedFormEntity(param)); 
       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 

       // read content 
       is = httpEntity.getContent(); 

      } catch (Exception e) { 

       Log.e("log_tag", "Error in http connection " + e.toString()); 
      } 

      return null; 
     } 

     InputStream is = null; 
     String result = ""; 

     protected void onPostExecute(Void v) { 


      Toast.makeText(getContext(), "You have voted this down!", 
        Toast.LENGTH_SHORT).show(); 

     } 

    } 

我得到上運行,並在onPostExecute沒有錯誤,敬酒從不顯露。 (注意:這是ArrayAdapter.裏面的一個內部類)我還加了一杯烤麪包,看看我的ArrayList是否正確展開,並將其放在onPostExecute中,但它從未顯示過。

如何測試以查看此任務是否正在運行?

+0

你的意思是'UnHelpfulTask​​'? – KhalidTaha

回答

2

變化

protected void onPostExecute(Void v) { 

所以它是

protected void onPostExecute(ArrayList<String> arr) 

或者改變你的AsyncTask聲明,以便它

extends AsyncTask<ArrayList<String>, Void, Void> 

哪個是更好的主意,因爲你在doInBackground()返回null。你沒有得到祝酒的原因是因爲你正在制定一個不同於AsyncTask指定的方法。這就是爲什麼我們通常使用@Override註釋 - 它會強制檢查實際的覆蓋,您需要在像AsyncTasks這樣的類中進行檢查。

+0

我去了第二個選項,它的工作。這是我第一次將* arg傳遞給'AsyncTask',我不知道如何設置它。謝謝! – KickingLettuce

+0

@KickingLettuce沒問題:) –