在我的活动onCreatemethode中,我将如下所示排除asynctask,
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new PizzaCustomizeAsyncTask(ActivityPizzaCustomize.this, null).execute();
PizzaCustomizeAsyncTask
@Override
protected void onPostExecute(JSONArray result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
listener.onTaskCompleted(responseJson);
}
在这个asynctask我得到responseJson的响应。当我试图将它发送回onTaskComplete方法时,它会崩溃,并且消息应用程序已经停止。
然后我有相同的活动,我正在使用它来获取asynctask的响应。
@Override
public void onTaskCompleted(JSONArray responseJson) {
try {
List<String> crust = new ArrayList<String>();
for (int i = 0; i < responseJson.length(); ++i) {
JSONObject object = responseJson.getJSONObject(i);
if ((object.getString("MainCategoryID")).equals("1")
&& (object.getString("SubCategoryID")).equals("1")) {
Log.i("Crust ", object.getString("Crust"));
crust.add(object.getString("Crust"));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
OnTaskCompleted接口
public interface OnTaskCompleted {
void onTaskCompleted(JSONArray responseJson);
}
当我将jsonresponse发送回活动时出现问题,所以这有什么问题
new PizzaCustomizeAsyncTask(ActivityPizzaCustomize.this, null).execute();
任何帮助将不胜感激,以解决此问题。
当我删除null时,它会给出以下错误和建议,如下图所示。 (我在PizzaCustomizeAsyncTask中得到了OnTaskCompleted监听器的suggesstion bz)
public PizzaCustomizeAsyncTask(Context context, OnTaskCompleted listener) {
// API = apiURL;
this.contxt = context;
this.listener = listener;
}
答案 0 :(得分:1)
ROOT CAUSE 是你的asynctask中的接口对象为null;
OnTaskCompleted listener;
将活动oncreate方法中的asynctask调用更改为:
new PizzaCustomizeAsyncTask(ActivityPizzaCustomize.this, this).execute();
你的顾问必须是这样的:
public PizzaCustomizeAsyncTask(Context context, OnTaskCompleted listener)
{
this.context=context;
this.listener=listener;
}
答案 1 :(得分:0)
您没有在构造函数中传递有效的侦听器参数。
而不是
new PizzaCustomizeAsyncTask(ActivityPizzaCustomize.this, null).execute();
你应该通过
new PizzaCustomizeAsyncTask(ActivityPizzaCustomize.this, listener).execute();
假设您已经创建了一个合适的侦听器。
答案 2 :(得分:0)
您可以拨打PizzaCustomizeAsyncTask
,如下所示:
PizzaCustomizeAsyncTask asyncTask =new PizzaCustomizeAsyncTask(new OnTaskCompleted() {
@Override
public void onTaskCompleted(Object output) {
....
}
});
asyncTask.execute();
}
在AsyncTask中:
OnTaskCompleted listener;
public PizzaCustomizeAsyncTask(OnTaskCompleted listener) {
this.listener = listener;
}