我有以下代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
这输出如下:
REMOVING: 0 false
REMOVING: 1 false
REMOVING: 2 true
Run Code Online (Sandbox Code Playgroud)
应用程序崩溃,即使索引2 - 4的视图尚未删除,抛出此错误:
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)))
Run Code Online (Sandbox Code Playgroud)
看起来这些视图是空的,即使getChildCount注册了视图存在,我的猜测是这导致removeChildAt崩溃.我在java中动态添加视图,所以我无法使用findViewByID.我真的很茫然.如何修复此崩溃,以便删除这些视图?
小智 8
我认为你实际上只是想删除元素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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2880 次 |
| 最近记录: |