2017-09-24 92 views
0

当我运行我的代码,它返回一个值,为“空”`为什么我的AsyncTask doInBackground()没有将值传递给onPostExecute()?

private class MessageActivityLoaderTask extends AsyncTask<Void, Void, Contentlist> { 
    private LinkedMultiValueMap<String, String> formData; 
    Activity activity; 

    public MessageActivityLoaderTask(Activity activity) { 
     this.activity = activity; 
    } 

    @Override 
    protected void onPreExecute() { 
     formData = new LinkedMultiValueMap<String, String>(); 
     mProgress.setMessage("Please wait.."); 
     mProgress.show(); 
    } 

    @Override 
    protected Contentlist doInBackground(Void... params) { 
     String url = getString(R.string.base_url) + "/example/example1/1"; 
     Contentlist mess = null; 
     try { 
      mess = RestUtils.exchangeFormData(url, HttpMethod.GET, formData, Contentlist.class); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      mProgress.dismiss(); 
     } 
     return mess; 

    } 

    protected void onPostExecute(Contentlist result) { 

     if (result== null) { 
      Toast message = Toast.makeText(ListobjectsActivity.this, "result is empty", Toast.LENGTH_SHORT); 
      message.show(); 
     } else { 
      ListactivityAdapter adapter = new ListactivityAdapter(this.activity, result.getContents()); 

      ListView list = (ListView) activity.findViewById(R.id.account); 
      list.setAdapter(adapter); 
      mProgress.dismiss(); 
     } 

    }` 
+0

你需要检查你是否正在调用方法exchangeFromData –

+0

你是否有可能发布exchangeFromData的代码(0 –

+0

你必须添加缺少的模板参数'... extends AsyncTask {...'使其工作 – k3b

回答

2

AsyncTask看起来是正确设置,所以onPostExecute()将收到doInBackgroun()返回ContentList。由于onPostExecute()正在看到null,因此doInBackground()正在返回空值。这意味着要么doInBackground()正在发生异常,并且mess从未通过catchRestUtils.exchangeFormData()返回空值而设置为非空值。

我建议你调试这个区域的代码,看看到底发生了什么。这不可能是AsyncTask问题。

相关问题