CallBack给出一个空指针异常

时间:2012-05-27 11:41:10

标签: java android android-asynctask

我正在尝试在AsyncTast中创建一个简单的webreader,

主线程

public class main extends Activity implements CallBackListener{
...
        WebReader wr = new WebReader();
        wr.execute("http://www.google.com");
...
    @Override
    public void callback(String res)
    {
        Log.e("eee",res);
    }
 ...
}

...
interface CallBackListener
{
void callback(String res);
}

和webreader

class WebReader extends AsyncTask<String, Void, String>{


    CallBackListener mListener;

       public void setListener(CallBackListener listener){
         mListener = listener;
       }


    @Override
    protected String doInBackground(String... urls) {

        String response = "";

            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(urls[0]);
            try {
                HttpResponse execute = client.execute(httpGet);
                InputStream content = execute.getEntity().getContent();

                BufferedReader buffer = new BufferedReader(
                        new InputStreamReader(content));
                String s = "";
                while ((s = buffer.readLine()) != null) {
                    response += s;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

        return response;
    }


    @Override
    protected void onPostExecute(String result) {
        Log.e("s3","ss"+result);
        mListener.callback(result); // null point here
    }



}

然后它在mListener.callback的一个零点崩溃了...任何想法可能出错?

谢谢!

1 个答案:

答案 0 :(得分:2)

您没有设置监听器。你应该有这样的东西:

 WebReader wr = new WebReader();
 wr.setListener( new YourCallbackListener() );
 wr.execute("http://www.google.com");