Это первый раз я использую AsyncTask поэтому, если ошибка очень глупо извинится ...AsyncTask - onPostExecute вызывается в начале
Это мили класс:
class HttpAsyncTask extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... urls)
{
return null;
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result)
{
Log.i("ASYNC", "size: "+todo.size());
displayListView();
}
public String POST(String url)
{
InputStream inputStream = null;
String result = "";
try
{
HttpClient httpclient = new DefaultHttpClient();
//make POST request to the given URL
HttpPost httpPost = new HttpPost(url);
// pass parameters in this way
for(int i=0;i<preguntas.length;i++)
{
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id",String.valueOf(preguntas[i])));
nameValuePairs.add(new BasicNameValuePair("te",tablas[i]));
//add data
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// 8. Execute POST request to the given URL
HttpResponse httpResponse = httpclient.execute(httpPost);
// 9. receive response as inputStream
inputStream = httpResponse.getEntity().getContent();
// 10. convert inputstream to string
if(inputStream != null)
{
result = convertInputStreamToString(inputStream);
NumPregTem todoAux = new NumPregTem();
todoAux.setBBDD(preguntas[i]) ;
todoAux.setTema(tablas[i]);
String[] aux = result.split(";");
todoAux.setPreg(aux[0]);
todoAux.setRespA(aux[1]);
todoAux.setRespB(aux[2]);
todoAux.setRespC(aux[3]);
todoAux.setRespD(aux[4]);
todoAux.setRespV(aux[5]);
todo.add(todoAux);
}
else
{
result = "Did not work!";
}
}
Log.i("ASYNC", "i've finished to query");
}
catch (Exception e)
{
Log.d("InputStream", e.getLocalizedMessage());
}
return result;
}
}
Моя проблема заключается в том, что в debbuger я вижу сообщение Log.i («ASYNC», «size:» + todo.size()); в onPostExecute() перед сообщением Log.i («ASYNC», «я закончил запрос»); в POST, и когда я использую todo.get (i) в моем основном классе (вызов displayListView()), этот объект имеет значение null.
благодарит вас!
я хочу, когда асинхронная задача завершена она вызывает displayListView()
PD: я называю POST в этой функции (в моем главном классе)
HttpAsyncTask httpAsyncTask = new HttpAsyncTask();
httpAsyncTask.execute("http://appdomain.hol.es/webService.php");
Я не вижу ваш метод POST вызывались в любом месте – Droidman
я отредактировал posthttpAsyncTask.execute, в моем главном классе у называют функция, которая вызывает, и когда асинхронная задача завершена, вы хотите вызвать displayLstView() – mdl
, что вы делаете, это передать параметры вашей задаче. Метод POST() по-прежнему не вызывается. См. Ответы. Ваша задача на самом деле ничего не делает – Droidman