所以标题说明了一切。我在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;
}
}
答案 0 :(得分:5)
如错误所示,请替换
public ArrayList<String> searchPlayer(String name)
与
public ArrayList<String> searchPlayer(final String name)
必须声明参数final
以确保它永远不会被方法中的代码更改,因此可以安全地在响应侦听器中使用。
答案 1 :(得分:3)
将final
添加到参数声明中:
public ArrayList<String> searchPlayer(final String name)