当以下异步方法更新我的主页时,我当前收到java.lang.IllegalStateException: Fragment HomeFragment{b862cf1} not attached to Activity
错误。
new AsyncTask<HomeCardHolder, Void, List<HomeCardModel>>() {
HomeCardHolder mHomeCardHolder;
@Override
protected List<HomeCardModel> doInBackground(HomeCardHolder... params) {
if (params != null && params.length > 0) {
mHomeCardHolder = params[0];
}
return getPunchCardDeals();
}
@Override
protected void onPostExecute(List<HomeCardModel> punchCard) {
if (isActivityAlive() && !ListUtils.isEmpty(punchCard) && mHomeCardHolder != null) {
mCardAdapter.refreshDataForCards(mHomeCardHolder.getSectionName(), punchCard);
}
}
}.execute(homeCardHolder);
事情是getPunchCardDeals()
检索交易列表,但也更新UI元素。我已经读过UI元素无法在后台线程上更新,那么这里的结构是什么?
谢谢, Otterman
编辑: 我正在检查是否添加了片段。
boolean isActivityAlive() {
return null != getActivity() && isAdded() && !getActivity().isFinishing();
}
答案 0 :(得分:0)
在更新视图时,应确保片段随活动一起添加。为此,您应该使用fragment.isAdded()。 所以更换
if (isActivityAlive() && !ListUtils.isEmpty(punchCard) && mHomeCardHolder != null)
与
if (isAdded()&&isActivityAlive() && !ListUtils.isEmpty(punchCard) && mHomeCardHolder != null)
可以帮到你。