我需要在AsyncTask执行中传递一个变量,但无法弄清楚如何执行它

时间:2014-11-17 19:45:39

标签: java variables types android-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;
}

沿着这一行的其他问题建议创建另一个类来保存变量。有没有一种简单的方法可以通过execute传递这个变量?

1 个答案:

答案 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