1

所以标题说明了一切。我的 JsonObjectRequest 内部出现编译错误

我确信这是一个非常简单的修复,但我不确定如何编写它。我仍处于 android 开发的早期阶段,所以请原谅我的菜鸟。:)

这是代码。

public class Api {

public static final String SEARCH_URL = "http://api.worldoftanks.ru/2.0/account/list/?application_id=171745d21f7f98fd8878771da1000a31&search=";
private RequestQueue mQueue;
private ArrayList<String> mNames;

public Api(Context context) {
    mQueue = Volley.newRequestQueue(context);
}

public ArrayList<String> searchPlayer(String name) {


    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, SEARCH_URL + name, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject json) {

            try {
                JSONArray data = json.getJSONArray("data");
                for (int i = 0; i < data.length(); i++) {
                    JSONObject c = data.getJSONObject(i);

                    String n = name.getString("nickname");
                    mNames.add(n);
                }

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


        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Error", error.getMessage());
        }
    }
    );

    mQueue.add(jsonObjectRequest);
    return mNames;
}

}

4

2 回答 2

5

正如错误所说,更换

public ArrayList<String> searchPlayer(String name)

public ArrayList<String> searchPlayer(final String name)

必须声明参数final以确保它永远不会被方法内的代码更改,因此可以在响应侦听器中安全地使用。

于 2013-11-09T11:41:29.470 回答
3

添加final到参数声明:

public ArrayList<String> searchPlayer(final String name)
于 2013-11-09T11:41:16.450 回答