Android LinearLayout.removeViewAt (int i) выдает исключения? ⇐ Android
-
Гость
Android LinearLayout.removeViewAt (int i) выдает исключения?
У меня есть следующий код:
for (int i = 0; i < LinearLayout.getChildCount() - 5; i++) //В этом коде предположим, что количество дочерних элементов равно 10; { Представление v = LinearLayout.getChildAt(i); Standard.Loge("УДАЛЕНИЕ: " + i + " " + (v == null)); линейныйLayout.removeViewAt(i); } Это выводит следующее:
УДАЛЕНИЕ: 0 ложь УДАЛЕНИЕ: 1 неверно УДАЛЕНИЕ: 2 верно приложение аварийно завершает работу, хотя представления с индексами 2–4 не были удалены, выдает следующую ошибку:
java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.view.View.unFocus(android.view.View)» по ссылке на нулевой объект в android.view.ViewGroup.removeViewInternal(ViewGroup.java:4937) в android.view.ViewGroup.removeViewAt(ViewGroup.java:4899) at (((Последняя строка в цикле for выше))) Похоже, что представления имеют значение NULL, хотя getChildCount регистрирует, что представления существуют, и я предполагаю, что это приводит к сбою RemoveChildAt. Я динамически добавляю представления в Java, поэтому не могу использовать findViewByID. Я действительно в растерянности здесь. Как исправить этот сбой, чтобы удалить эти представления?
У меня есть следующий код:
for (int i = 0; i < LinearLayout.getChildCount() - 5; i++) //В этом коде предположим, что количество дочерних элементов равно 10; { Представление v = LinearLayout.getChildAt(i); Standard.Loge("УДАЛЕНИЕ: " + i + " " + (v == null)); линейныйLayout.removeViewAt(i); } Это выводит следующее:
УДАЛЕНИЕ: 0 ложь УДАЛЕНИЕ: 1 неверно УДАЛЕНИЕ: 2 верно приложение аварийно завершает работу, хотя представления с индексами 2–4 не были удалены, выдает следующую ошибку:
java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.view.View.unFocus(android.view.View)» по ссылке на нулевой объект в android.view.ViewGroup.removeViewInternal(ViewGroup.java:4937) в android.view.ViewGroup.removeViewAt(ViewGroup.java:4899) at (((Последняя строка в цикле for выше))) Похоже, что представления имеют значение NULL, хотя getChildCount регистрирует, что представления существуют, и я предполагаю, что это приводит к сбою RemoveChildAt. Я динамически добавляю представления в Java, поэтому не могу использовать findViewByID. Я действительно в растерянности здесь. Как исправить этот сбой, чтобы удалить эти представления?
Мобильная версия