【问题标题】:why does not return a value?为什么不返回值?
【发布时间】:2014-04-21 16:23:58
【问题描述】:

为什么这个方法不返回数据?我不明白。 我可以在循环中打印数据,但不返回数据。 提前谢谢你。

public static ArrayList getNewspapers(final Context context,String name) {

    final ArrayList<String> newspapersList = new ArrayList<String>();

    AsyncHttpClient cli = new AsyncHttpClient();
    cli.get("http://brnbyk.com/newspapers/islemler.php?islem=ulkebul&keyword="
            +name, new AsyncHttpResponseHandler() {

        @Override
        public void onSuccess(String content) {

            try {

                JSONArray ja = new JSONArray(content);

                for (int i = 0; i < ja.length(); i++) {
                    JSONObject jo = ja.getJSONObject(i);
                    newspapersList.add(jo.getString("adi"));

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    return newspapersList;
}

}

【问题讨论】:

    标签: android arraylist return


    【解决方案1】:

    这是一个异步调用,不会阻塞 UI 线程。您在 onSuccess 回调中获得了操作的结果,但在返回时您的 arraylist 仍然是空的。

    【讨论】:

      【解决方案2】:

      您的 AsyncHttpClient 正在创建一个在后台运行的线程。但是,这会导致您的函数返回而无需等待回调将检索到的数据存储在结果列表中。结果是返回一个空列表。

      【讨论】:

        【解决方案3】:

        在 finally 块中编写代码。 try block 后,finally 中的代码即使有异常也会执行。

        【讨论】:

          猜你喜欢
          • 2014-02-10
          • 1970-01-01
          • 2011-06-19
          • 2016-12-28
          • 2021-10-26
          • 2015-01-20
          • 1970-01-01
          • 1970-01-01
          • 2019-01-08
          相关资源
          最近更新 更多