我正在从我的Fragment类调用我的AsyncTask,当我尝试将数据发送回我的Fragment时,我得到一个空指针异常。
public interface AsyncListner {
public void onLoadComplete(List<DocumentResponse> documents);
}
My Fragment类实现了该接口。
public class FragmentClass extends SherlockFragment implements AsyncListner {@
Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new AsyncTask(Obj, getSherlockActivity()).setListener(this);
new AsyncTask(Obj, getSherlockActivity()).execute();
}
@Override
public void onLoadComplete(List < Response> data) {
Log.d("Result", data.toString());
}
}
答案 0 :(得分:6)
您已拨打new
两次,创建了两个不同的AsyncTasks:
new DocumentsAsyncTask(documentsObject, getSherlockActivity()).setListener(this);
new DocumentsAsyncTask(documentsObject, getSherlockActivity()).execute();
你应该只创建一个:
DocumentsAsyncTask task = new DocumentsAsyncTask(documentsObject, getSherlockActivity());
task.setListener(this);
task.execute();
注意区别?
在您现有的代码中创建:
execute()
。null
侦听器但你调用了execute()
。 在新代码中,你有一个同时执行这两个操作的AsyncTask。
答案 1 :(得分:3)
如果类的成员变量为null,则表示您从未将其初始化为指向构造函数中的非null引用。
Java中的所有对象引用类型都初始化为null,直到您将它们指向通过调用new初始化的引用。
你的构造函数在哪里?