Ошибка приложения при выборе / прокрутке элементов на Spinner. (LG Mobile) (java.lang.IllegalStateException: Итерация уже запущена)

Я сделал приложение, в котором пользователю нужно выбрать целое число из Spinner . Я Spinner с помощью Adapter . Код такой.

 Integer[] intArray = new Integer[500]; for (int i = 0; i < 500; i++) intArray[i] = i + 1; ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_spinner_dropdown_item, intArray); spinner.setAdapter(adapter); 

Приложение написано для API-21 . Он отлично работал на Samsung-mobile но когда я попытался запустить его на LG-Mobile , приложение рушится всякий раз, когда я прокручиваю элементы в счетчике. Ошибка – это что-то новое, поскольку я не нашел подобную ошибку. Ошибка:

 process: com.example.temp.project, PID: 12142 java.lang.IllegalStateException: Iteration already started at android.view.ViewTreeObserver$CopyOnWriteArray.start(ViewTreeObserver.java:987) at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:811) at android.widget.PopupWindow.update(PopupWindow.java:1524) at android.widget.PopupWindow.update(PopupWindow.java:1654) at android.widget.PopupWindow.update(PopupWindow.java:1607) at android.widget.ListPopupWindow.show(ListPopupWindow.java:612) at android.widget.Spinner$DropdownPopup.access$701(Spinner.java:1069) at android.widget.Spinner$DropdownPopup$2.onGlobalLayout(Spinner.java:1178) at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:815) at android.widget.PopupWindow.update(PopupWindow.java:1524) at android.widget.PopupWindow.update(PopupWindow.java:1654) at android.widget.PopupWindow.update(PopupWindow.java:1607) at android.widget.ListPopupWindow.show(ListPopupWindow.java:612) at android.widget.ListPopupWindow$ResizePopupRunnable.run(ListPopupWindow.java:1759) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5299) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703) 

Любой намек на то, как я могу решить эту проблему.

Solutions Collecting From Web of "Ошибка приложения при выборе / прокрутке элементов на Spinner. (LG Mobile) (java.lang.IllegalStateException: Итерация уже запущена)"

Вот мое решение. Это может быть не идеальное решение, а работа для меня. В моем исходном файле XML я использовал GraphView над GraphView spinner's Layout , как это

 <LinearLayout android:id="@+id/main_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1" android:layout_alignParentTop="true"> <com.jjoe64.graphview.GraphView android:id="@+id/graph_view" android:layout_width="match_parent" android:layout_height="230dp" android:orientation="vertical" /> <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="80dp"> <Spinner android:layout_marginLeft="10dp" android:layout_width="80dp" android:layout_height="80dp" android:id="@+id/SSspinner" android:layout_weight="1" /> <Spinner android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_width="80dp" android:layout_height="80dp" android:id="@+id/Avgspinner" android:layout_weight="1" /> </LinearLayout> </LinearLayout> 

Проблема была новой, поскольку я не нашел такой проблемы в сети. Прочитав из разных источников, я понял, что это вопрос макета. Это то, что я тогда сделал

 <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:orientation="horizontal"> <Spinner android:id="@+id/SSspinner" android:layout_width="80dp" android:layout_height="80dp" android:layout_marginLeft="10dp" android:layout_weight="1" /> <Spinner android:id="@+id/Avgspinner" android:layout_width="80dp" android:layout_height="80dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_marginTop="80dp" android:id="@+id/main_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:orientation="vertical" android:weightSum="1"> <com.jjoe64.graphview.GraphView android:id="@+id/graph_view" android:layout_width="match_parent" android:layout_height="230dp" android:orientation="vertical" /> </LinearLayout> 

Отправка ответа из комментариев :

Решил эту проблему. Фактически, это был вопрос макета. Spinner должен быть на вершине других макетов фона. Раньше графики GraphView были передними макетами, но теперь я положил Spinners на передний план, и он работает нормально.

И здесь :

Ну, у меня нет конкретного ответа, я просто изменил структуру XML-файла. Просто переместил Spinner поверх GraphView. Ну, это не из-за адаптера. Адаптеры были затронуты на каждом устройстве, но приложение разбилось только в LG

Как предложено здесь: Вопрос без ответов, но проблема решена в комментариях (или распространена в чате)

До вас / (как и мы) не имеют идеального ответа, попробуйте включить инструкции в блок try и catch, чтобы вы могли понять, где итерация (по какому индексу) терпит неудачу …

  Integer[] intArray = new Integer[500]; for (int i = 0; i < 500; i++) intArray[i] = i + 1; ArrayAdapter<Integer> adapter = null; try { adapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_spinner_dropdown_item, intArray); spinner.setAdapter(adapter); }catch(Exception e) { System.out.println("Iteration is "+i); e.printStackTrace(); }