Java:访问函数之外的字符串



我是一个爱好程序员,并且正在尝试在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);
    }
}

因此,现在它是一个全局变量,可以从您的所有方法中获得。享受!

最新更新