我是一个爱好程序员,并且正在尝试在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);
您可以稳定访问它,但是直到调用onSuccess()
,它才能初始化,这很可能是在之后 Log.d()
被调用,因为 client.post()
被异型执行。
因此,目前您尝试登录returnJson
,它尚未初始化,并且记录无法正常工作。
您需要使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);
}
}
因此,现在它是一个全局变量,可以从您的所有方法中获得。享受!