【发布时间】:2016-01-06 16:25:08
【问题描述】:
我无法找出正确的方法。首先让我们看一下代码:
//This method Fetch raw json Data
public void fetchJsonData(String url){
OkHttpClient client = new OkHttpClient();
Request req = new Request.Builder()
.url(url)
.build();
Call call = client.newCall(req);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
jSonData = response.body().string();
}
});
}
这个方法在一个普通类中,不是一个活动,我想做的是我希望这个方法返回jSondata,只需将返回类型从void更改为String不起作用,因为,在匿名类中也发生在其他线程中,我需要在其他方法中分配这个 jSonData 变量,该方法将从片段中调用。
所以,让我知道我是否可以将变量从这里传递给同一个主类中的其他方法。
【问题讨论】:
-
如果此方法与需要数据的其他方法在同一个类中,那么您只需从该方法返回您在
onResponse中设置的字符串并将其传递给下一个方法。因此,您只需致电theOtherMethod(fetchJsonData(url));。另一种选择是在类中定义一个名为String jsonResponse的全局变量,然后在您的fetchJsonData方法中分配它。
标签: java android multithreading anonymous okhttp