gpt4 book ai didi

Android LinearLayout.removeViewAt (int i) 抛出异常?

转载 作者:太空狗 更新时间:2023-10-29 15:51:16 25 4
gpt4 key购买 nike

我有以下代码:

for (int i = 0; i < linearLayout.getChildCount() - 5; i++) //IN this code, please assume the child count is 10;
{
View v = linearLayout.getChildAt(i);
Standard.Loge("REMOVING: " + i + " " + (v == null));
linearLayout.removeViewAt(i);
}

输出如下:

REMOVING: 0 false
REMOVING: 1 false
REMOVING: 2 true

应用程序崩溃,即使索引 2 - 4 处的 View 尚未删除,并抛出此错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.unFocus(android.view.View)' on a null object reference
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4937)
at android.view.ViewGroup.removeViewAt(ViewGroup.java:4899)
at (((The last line in the for loop above)))

看起来 View 为空,即使 getChildCount 注册 View 存在,我的猜测是这导致 removeChildAt 崩溃。我在 java 中动态添加 View ,所以我无法使用 findViewByID。我真的很茫然。如何修复此崩溃,以便删除这些 View ?

最佳答案

我认为您实际上只想删除元素 0。当您删除其中一个元素时,它们都会向后移动。所以元素 1 变成 0,2 变成 1,等等。

这段代码应该可以工作:

for (int i = 0; i < linearLayout.getChildCount() - 5; i++) //IN this code, please assume the child count is 10;
{
View v = linearLayout.getChildAt(0);
Standard.Loge("REMOVING: " + 0 + " " + (v == null));
linearLayout.removeViewAt(0);
}

关于Android LinearLayout.removeViewAt (int i) 抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37619979/

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