我需要在 AsyncTask 执行中传递一个变量,但不知道该怎么做



我有一个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"或查看官方文档。

最新更新