gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:50:39 25 4
gpt4 key购买 nike

我有一个应用程序通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com