【发布时间】:2026-02-01 04:40:01
【问题描述】:
对不起,这是一个重复的问题,
虽然提到了这个post。我试图从匿名内部类中分配一个值。但它总是打印 null[Toast.makeText(getBaseContext(),token[0],Toast.LENGTH_SHORT).show();] 。我在此代码示例中做错了什么。
还有比这更好的返回字符串值的方法吗?
public String getAccessToken(String url) {
final String[] token = new String[1];
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, url,
new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
try {
token[0] = response.getString("access_token");
tv.setText(token[0]);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", String.valueOf(error));
}
}
);
queue.add(postRequest);
Toast.makeText(getBaseContext(),token[0],Toast.LENGTH_SHORT).show();
return token[0];
}
【问题讨论】:
-
您打算如何在请求完成之前返回令牌?目前,您创建数组(默认包含 null),创建请求,将请求添加到队列,然后返回数组的内容(仍然为 null!)。几毫秒后,大概您可以查看队列并实际执行请求。
-
@immibis 我正在使用
Volly库发出发布请求。当它进入onResponse方法时,它将具有该值。我可以将该值设置为TextView(电视)。但无法在onResponse方法之外分配和返回该值。 -
嗯,是的,因为您试图在调用
onResponse之前获取值。 -
那么如何实现呢?
-
我不明白一件事。我正在分配一个变量
taken[0],它在onResponse方法中也有一个范围,并使用该变量将其设置为Toast。这意味着token[0]已经分配了一个值。但是当我尝试在该方法之外打印相同的变量时,它是空的。赋值后为什么值是空的?
标签: java android anonymous-inner-class