我需要将异步任务结果传递给调用类。我创建了一个单独的 ASync 类,该类从其他类中调用。我正在将“Post Execute”方法中的异步任务的响应传递给调用类方法,但得到空点异常。下面是我的调用方法
public boolean getCategories() {
serUri = "categories.json";
WebServiceAsyncTask webServiceTask = new WebServiceAsyncTask();
webServiceTask.execute(serUri,this);
return true;
}
使用下面 aysnc 任务的结果执行的方法是
public void writeJSONArray(final JSONArray result)
{
try {
for (int i=0; i<result.length();i++){
JSONObject c = result.getJSONObject(i);
String name = c.getString("catname");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
WebServiceAsyncTask 类:
public class WebServiceAsyncTask extends AsyncTask<Object,Void,JSONArray> {
ROMSjson roms;
private static JSONArray json = null;
private Context context = null;
protected JSONArray doInBackground(Object... params) {
// TODO Auto-generated method stub
String serviceUrl = (String) params[0];
final HTTPHelper httph = new HTTPHelper(serviceUrl,context);
if(serviceUrl.equalsIgnoreCase("categories.json")) {
json = httph.fetch();
}else if(serviceUrl.equalsIgnoreCase("categories/create"))
{
}
return json;
}
@Override
protected void onPostExecute(JSONArray result) { // invoked on the ui thread
roms.writeJSONArray(result);
super.onPostExecute(result);
}
roms.writeJSONArray(result)
调用时出现空点异常。在此命令之前正确接收结果。我检查了 Log 语句。此外,如果我在 Async 类中编写 writeJSONArray 方法而不是调用类,则一切正常。
我不确定在传递结果或调用方法时是否遗漏了什么。请指教。谢谢。