由于okhttp3的异步请求,需要开启线程,之前在activity中都是直接调用UI线程,可是发现在fragment中不行,现在记录下代码:
private void initBanner() {
OkHttpClient mOkHttpClient = new OkHttpClient();
RequestBody formBody = new FormBody.Builder().build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Call call = mOkHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Toast.makeText(getActivity(), "网络连接失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String str = response.body().string();
new Thread(new Runnable() {
@Override
public void run() {
Advertisement advertisement = new Gson().fromJson(str, Advertisement.class);
int resultCode = advertisement.getResultCode();
if (resultCode == 100) {
adList = advertisement.getadvertisement1();
for (int i = 0; i < adList.size(); i++) {
String pic = adList.get(i).getPicture();
imageUrl.add(ImageBasePath + pic);
}
} else {
Toast.makeText(getActivity(), advertisement.getResultMessage(), Toast.LENGTH_SHORT).show();
}
}
}).start();
}
});
}