java - Android - 从同类访问 Servlet AsyncPost 任务响应

标签 java android json servlets android-studio

我有一个应用程序通过 AsyncPost 任务连接到 Java Servlet 后端。该任务向客户端返回一个字符串,表示用 Gson 序列化的 json 对象。

它几乎可以正常工作,问题是我无法从实例化调用 ServletPostAsyncTask 的类访问 Servlet 响应消息:ListViewPrenota.class。 项目结构如下:

我在 Servlet 和客户端中创建了两个类,Tour.classTours.class 来存储我的数据:

旅游类:

public class Tour {
  // some simple int/string/list fields
}

游览类:

public class Tours {
  private List<Tour> tours;
  // ...
}

在客户端,在 ServletPostAsyncTask.class 中,我在 doInBackGround() 中收到上述 Gson 对象。在 onPostExecute() 中,我以这种方式反序列化它:

class ServletPostAsyncTask extends AsyncTask<Pair<Context, String>, Void,     String> {
    private Context context;
    Tours tours;

    @Override
    protected String doInBackground(Pair<Context, String>... params) {
     //connect to Servlet and get the serialized Gson object
    }

    @Override
    protected void onPostExecute(String jsonResponse) {
        tours = (new Gson().fromJson(jsonResponse, Tours.class));
    }
} 

现在,我从客户端的 ListViewPrenota.class 调用 ServletPostAsyncTask:

ServletPostAsyncTask s = new ServletPostAsyncTask();
s.execute(new Pair<Context, String>(ListViewPrenota.this, "tours"));
Tours ttours = s.tours;
Tour tour = ttours.getTours().get(0);

问题:我收到一个 java.lang.NullPointerException 指向 Tour tour = ttours.getTours().get(0);

阻止我从 ServletPostAsyncTask 以外的其他类访问新接收的 Tours 对象的原因是什么?

非常感谢

最佳答案

问题是你认为代码是串行运行的,如果你想使用从 AsycTask 返回的东西,你需要在 onPostExecute 中使用它或者有一个回调完成后发送数据

doInBackground(){
//do heavy work
}

onPostExecute(Data data){
//handle data
//send data via interface to activity or class that needs the data
//or just put everything that needs the data in here
}

关于java - Android - 从同类访问 Servlet AsyncPost 任务响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237838/

相关文章:

c# - 如何从相当复杂的 Json 响应在 C# Asp.Net 中创建 Dto

jquery - 如何轻松将多维JSON解析为html?

java - 使用java计算json文件上的重复数据

java - 原始类型总是不好吗?

android 在外部浏览器中打开链接

android - RecyclerView 中的 View 与父级宽度不匹配

android - 什么是 Android PendingIntent?

java - 如何从 WSO2 ESB 应用程序生成的标记中删除 XML 属性?

java - xhtml 文件未通过注释与 bean 绑定(bind)

java - 用java从Mysql DB下载视频文件