繁体   English   中英

为什么我的AsyncTask doInBackground()没有将值传递给onPostExecute()?

[英]Why my AsyncTask doInBackground() is not passing a value to onPostExecute()?

当我运行我的代码时,它返回值为“ null”

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();
        }

    }`

您的AsyncTask看起来已正确设置,因此onPostExecute()将收到doInBackgroun()返回的ContentList 由于onPostExecute()看到null ,因此doInBackground()返回null。 这意味着doInBackground()会获取异常,并且通过陷入catch或将RestUtils.exchangeFormData()返回null RestUtils.exchangeFormData() mess设置为非null值。

我建议您调试此区域中的代码以查看实际情况。 它不太可能是AsyncTask问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM