首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有调用onPostExecute

没有调用onPostExecute
EN

Stack Overflow用户
提问于 2015-07-06 12:13:48
回答 3查看 70关注 0票数 1

我正在尝试在完成onPostExecute()方法之后调用doInBackground()方法,但是它没有被调用。我怎么才能解决这个问题?

我已经调试了它,我可以在ArrayList<ItemDTO> data对象中看到数据。

我很感谢你的帮助。

代码语言:javascript
运行
复制
public class GetLLRD {
Context mContext;

public void post_selected(String json, Context context) {
    new MyAsyncTask().execute(json);
    context = this.mContext;
}

class MyAsyncTask extends AsyncTask<String, Integer, List<ItemDTO>> {


    @Override
    protected List<ItemDTO> doInBackground(String... params) {

      .
      .
      .
      .

            Gson gson = new Gson();
            Type listType = new TypeToken<List<ItemDTO>>() {
            }.getType();
            ArrayList<ItemDTO> data = gson.fromJson(sb.toString(), listType);
      .
      .
      .
      .     


        return null;

    }

    protected void onPostExecute(ArrayList<ItemDTO> result) {

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                new MyAsyncTask().execute();
                System.out.println("The method onPostExcute() in GETLLRD class was invoked  again");
            }
        }, 1*30 * 1000);

        if (result != null) {
            Intent intent = new Intent(mContext, Map.class);
            intent.putExtra("list",result);
            mContext.startActivity(intent); 

        }else{
            Log.e("123", "Avoiding null pointer, the dat is null in the GETLLRD class!!!");
        }

    }

}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-06 12:31:56

您的onPostExecute 正在被调用。但是,正如其他人指出的那样,您在doInBackground中返回null,而不是将数据传递给onPostExecute

代码语言:javascript
运行
复制
public void post_selected(String json, Context context) { 
    new MyAsyncTask().execute(json); 
    context = this.mContext; 
} 

class MyAsyncTask extends AsyncTask<String, Integer, List<ItemDTO>> {


    @Override 
    protected List<ItemDTO> doInBackground(String... params) {

      . 
      . 
      . 
      . 

            Gson gson = new Gson(); 
            Type listType = new TypeToken<List<ItemDTO>>() {
            }.getType(); 
            ArrayList<ItemDTO> data = gson.fromJson(sb.toString(), listType); 
      . 
      . 
      . 
      .      


        return data; 

    } 

    protected void onPostExecute(ArrayList<ItemDTO> result) {

        new Handler().postDelayed(new Runnable() {
            @Override 
            public void run() { 
                new MyAsyncTask().execute();
                System.out.println("The method onPostExcute() in GETLLRD class was invoked  again");
            } 
        }, 1*30 * 1000); 

        if (result != null) {
            Intent intent = new Intent(mContext, Map.class);
            intent.putExtra("list",result);
            mContext.startActivity(intent); 

        } 

    } 

} 
票数 2
EN

Stack Overflow用户

发布于 2015-07-06 12:17:26

代码语言:javascript
运行
复制
 @Override
    protected List<ItemDTO> doInBackground(String... params) {

  .
  .
  .
  .

        Gson gson = new Gson();
        Type listType = new TypeToken<List<ItemDTO>>() {
        }.getType();
        ArrayList<ItemDTO> data = gson.fromJson(sb.toString(), listType);
  .
  .
  .
  .     


    return data;

}
票数 0
EN

Stack Overflow用户

发布于 2015-07-06 12:18:21

doInBackground()中而不是

代码语言:javascript
运行
复制
 return null;

代码语言:javascript
运行
复制
 return data;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31245562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档