我的听众中的空指针异常

时间:2013-03-31 15:43:49

标签: java android

我正在从我的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());
    }
}

我听了这个回答。 https://stackoverflow.com/a/13476196/98514

2 个答案:

答案 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();

注意区别?
在您现有的代码中创建:

  • 第一个AsyncTask,您在其中设置侦听器但不调用execute()
  • 第二个AsyncTask,它有一个null侦听器但你调用了execute()

在新代码中,你有一个同时执行这两个操作的AsyncTask。

答案 1 :(得分:3)

如果类的成员变量为null,则表示您从未将其初始化为指向构造函数中的非null引用。

Java中的所有对象引用类型都初始化为null,直到您将它们指向通过调用new初始化的引用。

你的构造函数在哪里?