在名为onCreateView
的{{1}}中,其中有另一个名为getDataFromServer(String url)
的函数。我设置了局部变量:
processData(String son)
它可以完成,但当程序进入下一步到达String json = "" inside the processData(String son);
时,它会突然变为空。
initTopicNewsImages()
答案 0 :(得分:1)
您应该了解asynchronous call
的工作原理。当你调用httpUtils.send
时,它会在后台线程上运行(关闭UI线程)。现在主线程上的control
到达initTopicNewsImages()
(在调用getDataFromServer(newsTabDatas.get(0).url)
之后),到那时后台线程没有返回,因此json
不是已更新。
您应该做的是,在后台线程返回后调用initTopicNewsImages()
方法。
像下面这样的东西会起作用:
httpUtils.send(HttpMethod.GET, GlobalConstans.SERVER_URL+url, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
String resultJson = responseInfo.result;
setJson(resultJson);
initTopicNewsImages(); //CALLING FROM HERE.
Log.d("*************************",json);
//CacheUtils.setCache(GlobalConstans.CATEGORY_URL,result,getActivity());
processData(json);
}
@Override
public void onFailure(HttpException e, String s) {
e.printStackTrace();
Log.d("Fail","fail");
Toast.makeText(getActivity(),"Failure", Toast.LENGTH_SHORT).show();
}
});