fragment 请求异步网络数据 数据返回时总是 报空指针

_deadline _deadline 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大概情况是这样Activity中包含 viewpager+3个fragment

@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_case_main, container,
false);
listView = (XListView) view.findViewById(R.id.case_listview);
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(false);
listView.setXListViewListener(this);
mRefreshLayout = (SwipeRefreshLayout) view
.findViewById(R.id.case_swiperefreshlayout);
initListView();
initSwipeRefreshLayout();
LogUtil.log("case fragment called oncreateview");
return view;
}

@Override
public void onResume() {
if (CaseCenterActivity.currentFragment instanceof CaseBaiduFragment)
{
initLogicData();
}
super.onResume();
}

private void initLogicData() {
caseList = new ArrayList<CaseItem>();
CaseHost.getCaseList(this);
}


然后getcaseList();方法

public void getCaseList(final CaseBaseFragment whichFragment) {

String url = UrlUtils.BASEURL + getCondition();
LogUtil.log("URL===================" + url);

client.get(url, new AsyncHttpResponseHandler() {

@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] response) {
String string = new String(response);
if(whichFragment instanceof CaseBaiduFragment)
{
fragmentList.get(0).onsuccess(statusCode, headers, string);
LogUtil.log(string);
}
}

@Override
public void onFailure(int statusCode, Header[] headers,
byte[] response, Throwable throwable)
{
if (!NetworkUtils.isNetworkAvailable()) {
showToast(R.string.network_unaiviable);
}
currentFragment.onFailure(statusCode, headers, new String(response), throwable);

}
});

}


然后在网络返回后会执行
fragmentList.get(0).onsuccess(statusCode, headers, string);

然后在fragment中的onsuccess方法

	@Override
public void onsuccess(int statusCode, Header[] headers, String response) {
mRefreshLayout.setRefreshing(false);
listView.stopLoadMore();
caseList.addAll(JsonUtil.json2ObList(
InvalideJson.ValideJson(response), CaseItem.class));
adapter.notifyDataSetChanged();
}


每当执行到 mRefreshLayout.setRefreshing(false); 这里时就会报空指针,按理说我是在初始化完成后才开始的网络访问,不应该报空指针啊
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
_deadline
Android 80,490 成员 91,375 内容