【问题描述】在HttpClient中的callBack中调用Toast方法出现此问题。
【原因分析】子线程不能调用操作Ui,因此出现此问题。
【解决办法】回到主线程操作,RunOnUiThread。
错误代码:
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
final String error=e.toString();
if(upRefresh) {
mSwipeRefreshLayout.setPullUpRefreshing(false);
}else{
mSwipeRefreshLayout.setRefreshing(false);
}
Log.e("requestFailed","刷新失败"+error);
Toast.makeText(getActivity(), "请检查网络!" + error, Toast.LENGTH_SHORT).show();
}
}
正确代码:
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
final String error=e.toString();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if(upRefresh) {
mSwipeRefreshLayout.setPullUpRefreshing(false);
}else{
mSwipeRefreshLayout.setRefreshing(false);
}
Log.e("requestFailed","刷新失败"+error);
Toast.makeText(getActivity(), "请检查网络!" + error, Toast.LENGTH_SHORT).show();
}
});
}