不幸的是,您没有提及错误报告来自哪个 Android 版本。但是,查看源代码,Android 2.1-update1 似乎是一个不错的候选者。
我将复制整个方法以使事情清楚:
public boolean removeFooterView(View v) {
if (mFooterViewInfos.size() > 0) {
boolean result = false;
if (((HeaderViewListAdapter) mAdapter).removeFooter(v)) { // <- line 274
mDataSetObserver.onChanged();
result = true;
}
removeFixedViewInfo(v, mFooterViewInfos);
return result;
}
return false;
}
现在将上述removeFooterView(...)
方法与更新平台的实现进行比较:
public boolean removeFooterView(View v) {
if (mFooterViewInfos.size() > 0) {
boolean result = false;
if (mAdapter != null && ((HeaderViewListAdapter) mAdapter).removeFooter(v)) {
if (mDataSetObserver != null) {
mDataSetObserver.onChanged();
}
result = true;
}
removeFixedViewInfo(v, mFooterViewInfos);
return result;
}
return false;
}
如您所见,我们为某些成员添加了一些额外的检查,而不是null
. 这表明第一种方法确实会在第 274 行 if 失败mAdapter == null
,而新的实现不会导致崩溃。
要解决这个问题,您可能需要做的就是lv.getAdapter() != null
在尝试删除页脚视图之前添加类似的内容。