我有一个AsyncTask,据我所知,我传递eventId是错误的,因为在日志中它显示为"Ljava.lang.String;@423e4370"
AsyncTask 是:
private class CallCategoryList extends AsyncTask<String, Void, String> {
protected String doInBackground(String... eventId) {
return readCategoryJSONFeed("http://webservice/service/category_list.php", eventId.toString());
}
...
}
我通过做来调用它:
new CallCategoryList().execute(fv);
fv 是通过调用从类返回它的函数来获取的
public String getEventByName(List<Event> eventList, String eventName) {
for (Event event : eventList) {
if (event.getEventName().equals(eventName)) {
return event.getId();
}
}
return null;
}
沿着这条线的其他问题建议创建另一个类来保存变量。难道没有一种简单的方法可以通过执行传递此变量吗?
构造 "字符串...eventId"只是"String[] eventId"的快捷方式。所以你应该使用 eventId[0] 或 Arrays.toString(eventId) 或适合你的逻辑的东西。
在您的情况下,使用单个 String 参数调用:
new CallCategoryList().execute(fv);
与静默阵列创建相同:
new CallCategoryList().execute(new String[] { fv });
尝试在谷歌上搜索"java vararg"或查看官方文档。