gpt4 book ai didi

android - 在 ListView.removeFooterView(View) 上崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:32 26 4
gpt4 key购买 nike

我在

上收到崩溃报告
 android.widget.ListView  lv;  lv.removeFooterView(v)

错误是空指针异常。我检查 listView 本身不为空。是什么原因造成的?是否需要确保要删除的 View 不为空?这足够了吗?还是我首先需要检查是否确实添加了页脚 View ?

java.lang.NullPointerException
at android.widget.ListView.removeFooterView(ListView.java:374)

在我看来,这种方法应该足够稳健,不会崩溃!如果不能删除 View ,为什么它不直接返回 false?

附言。我想知道有没有其他人看过这个?

最佳答案

很遗憾,您没有提及错误报告来自哪个 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。这表明如果 mAdapter == null,第一个方法确实会在第 274 行失败,而这不会导致较新的实现崩溃。

要解决它,您可能需要做的就是在尝试删除页脚 View 之前添加类似 lv.getAdapter() != null 的内容。

关于android - 在 ListView.removeFooterView(View) 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com