I am not reaching an onPostExecute in an AsyncTask Class.
I call the task this way, inside an onClick in a dialog box:
new HelpfulTask().execute(passing);
Note: When I hover over the above code, I get a warning:
A generic Array of ArrayList is created for a varargs
parameter.
I am not sure what that means and if that is preventing my Task from even running?
Here is the Task Code:
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();
}
}
I get no errors on run and in the onPostExecute, the Toast never shows. (Note: This is an inner class inside of an ArrayAdapter.) I also added a toast to see if my ArrayList was unwrapping properly and put that in the onPostExecute but it never showed either.
How can I test to see if this Task is even running?
Change
so it is
Or change your AsyncTask declaration so it
Which is the better idea since you return
nullindoInBackground(). The reason why you weren’t getting the toast is because you were making a different method than what your AsyncTask specifies. This is why we ususally use the@Overrideannotation – it forces a check for actual overrides, which you need to do in classes like AsyncTasks.