簡體   English   中英

android AsyncTask類中的NullPointerException

[英]NullPointerException in android AsyncTask class

我試圖通過Web服務獲取數據,以便使用下面顯示的asynctask調用。 如下面的屏幕截圖所示,它給了我一個零點異常。 可能是什么問題?

活動課

new PickupAsyncTask(getApplicationContext(), null).execute();

Asynctask類

public class PickupAsyncTask extends AsyncTask<String, Integer, JSONArray> {
    private OnTaskCompleted listener;
    private JSONArray responseJson = null;
    private Context contxt;
    private Activity activity;

    public PickupAsyncTask(Context context, OnTaskCompleted listener) {

        // API = apiURL;
        this.contxt = context;
        this.listener = listener;
    }

    // async task to accept string array from context array
    @Override
    protected JSONArray doInBackground(String... params) {

        String path = null;
        String response = null;
        HashMap<String, String> request = null;
        JSONObject requestJson = null;
        DefaultHttpClient httpClient = null;
        HttpPost httpPost = null;
        StringEntity requestString = null;
        ResponseHandler<String> responseHandler = null;

        try {
            path = "http://xxxxxxxxxxxxxxx/LocationService.svc/StreetDetails";

            new URL(path);
        } catch (MalformedURLException e) {

            e.printStackTrace();
        }

        try {

            // set the API request
            request = new HashMap<String, String>();
            request.entrySet().iterator();

            // Store locations in JSON
            requestJson = new JSONObject(request);
            httpClient = new DefaultHttpClient();
            httpPost = new HttpPost(path);
            requestString = new StringEntity(requestJson.toString());

            // sets the post request as the resulting string
            httpPost.setEntity(requestString);
            httpPost.setHeader("Content-type", "application/json");

            // Handles the response
            responseHandler = new BasicResponseHandler();
            response = httpClient.execute(httpPost, responseHandler);

            responseJson = new JSONArray(response);
            System.out.println("*****JARRAY*****" + responseJson.length());

        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        return responseJson;

    }

    @Override
    protected void onPostExecute(JSONArray result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        listener.onTaskCompleted(responseJson); //line 101
    }

}

OnTaskCompleted.java

public interface OnTaskCompleted {
    void onTaskCompleted(JSONArray responseJson);
}

listenernull 在調用listener器上的任何方法之前,先進行檢查以驗證listener是否為null

編輯

如果要處理任務完成, OnTaskCompleted的匿名對象OnTaskCompletedPickupAsyncTask構造函數,如下所示:

new PickupAsyncTask(context, new OnTaskCompleted() {

        @Override
        public void onTaskCompleted(JsonArray response) {
            //Handle the task completion

        }
    }).execute();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM