如何在下面的onResponse()回调中设置局部变量publicIpAddress? “ publicIpAddress = response”行出现错误“无法分配最终局部变量publicIpAddress,因为它是用封闭类型定义的”
public static String getPublicIpAddress(Context context)
{
String publicIpAddress = "";
StringRequest jsonObjectRequest = new StringRequest(Request.Method.GET,
"http://icanhazip.com/",
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
publicIpAddress = response;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error in getPublicIpAddress()");
}
});
VolleySingleton.getInstance(context).addToRequestQueue(jsonObjectRequest);
return publicIpAddress;
}
最佳答案
绝对不建议这样做。您发出的请求是异步的,并且始终会返回null或“”-初始化publicIpAddress时使用的任何值。
在将StringRequest放入队列之后,您的方法将有机会执行onResponse方法,然后立即返回。返回发生在调用此代码之前:publicIpAddress = response;
阅读此内容:Asynchronous HTTP Requests in Android Using Volley