所以标题说明了一切。我的 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;
}
最佳答案
如错误所说,替换
public ArrayList<String> searchPlayer(String name)
与
public ArrayList<String> searchPlayer(final String name)
参数必须声明为 final
以确保它永远不会被方法内部的代码更改,因此可以在响应监听器中安全地使用。
关于java - 在内部类中访问变量 "name"。需要声明为final,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875490/