残念ながら、エラー レポートの 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
、フッター ビューを削除する前に次のようなものを追加するだけです。