我是一个业余爱好程序员,我试图在onSuccess函数之外访问returnJson。在函数内部,我可以看到它按预期返回。有人可以解释为什么我不能在外面查看它以及我可以做些什么来让它在外面可以访问?
String returnJson;
client.post(context, url, entity, "application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
returnJson = response.toString();
}
});
Log.d("get json",returnJson);
答案 0 :(得分:1)
您可以正常访问它,但在调用onSuccess()
之前不会对其进行初始化,因为Log.d()
调用client.post()
后很可能被异步执行。
因此,当您尝试记录returnJson
时,它尚未初始化,并且日志记录将无法按预期工作。
答案 1 :(得分:-1)
您需要将returnJson
设为全局变量。
让我们说这是你班级的样子:
public class MyClass {
public void myMethod() {
String returnJson;
client.post(context, url, entity, "application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
returnJson = response.toString();
}
});
Log.d("get json",returnJson);
}
}
returnJson
变量仅在myMethod()方法内初始化。要解决此问题,您的课程应如下所示:
public class MyClass {
String returnJson;
public void myMethod() {
client.post(context, url, entity, "application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
returnJson = response.toString();
}
});
Log.d("get json",returnJson);
}
}
所以现在它是一个全局变量,可以从你的所有方法中加入。 享受!