我有一个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);
通过调用从类
返回它的函数来获取fvpublic String getEventByName(List<Event> eventList, String eventName) {
for (Event event : eventList) {
if (event.getEventName().equals(eventName)) {
return event.getId();
}
}
return null;
}
沿着这一行的其他问题建议创建另一个类来保存变量。有没有一种简单的方法可以通过execute传递这个变量?
答案 0 :(得分:1)
构建&#34;字符串... eventId&#34;只是&#34; String [] eventId&#34;的快捷方式。所以你应该使用eventId [0]或Arrays.toString(eventId)或适合你逻辑的东西。
在您的情况下使用单个String参数调用:
new CallCategoryList().execute(fv);
与静默数组创建相同:
new CallCategoryList().execute(new String[] { fv });
尝试google for&#34; java vararg&#34;或者查看official docs。