2015-11-23 13 views
18

Ho creato un'app in cui l'utente deve selezionare un numero intero da Spinner. Sto popolando il Spinner utilizzando Adapter. Il codice è come questo.App in crash durante la selezione/lo scorrimento degli oggetti su Spinner. (LG Mobile) (java.lang.IllegalStateException: Iterazione già avviata)

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); 

L'applicazione è scritta per API-21. Ha funzionato perfettamente su Samsung-mobile ma quando ho provato a eseguirlo su LG-Mobile, l'app si blocca ogni volta che sto scorrendo gli elementi nella casella di selezione. L'errore è qualcosa di nuovo in quanto non ho trovato un errore simile. Errore in questo modo

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) 

Qualsiasi suggerimento su come posso risolvere questo problema.

+0

Ho lo stesso problema in un G2 LG con (5.0.2 Android), ma sul mio Nexus 5 (Android 6.0) e su un LG G4 (Android 6.0) le opere di scorrimento bene. – zkminusck

+0

nessun problema su LG G3 (Android 5.0.1) e LG Leon (Android 5.0.1) – zkminusck

+0

Ho risolto questo problema. In realtà, era un problema di layout. Spinner deve essere in cima ad altri layout di sfondo. Precedentemente, i grafici di 'GraphView' erano in primo piano ma ora ho messo gli Spinners sul layout frontale e funziona bene. –

risposta

1

Ecco la mia soluzione. Potrebbe non essere una soluzione perfetta ma ha funzionato per me. Nel mio file originale XML, stavo usando GraphView di sopra del spinner's Layout, come questo

<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> 

Il problema era sorta di nuovo come non ho trovato alcun problema come questo sulla rete. Dopo aver letto da diverse fonti, ho capito che è un problema di layout. Questo è quello che ho fatto allora

<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> 
0

Distacco una risposta da the comments:

risolto questo problema. In realtà, era un problema di layout. Spinner deve essere in cima ad altri layout di sfondo. In precedenza, i grafici GraphView erano a layout frontale, ma ora ho messo gli Spinners sul layout frontale e funziona bene.

e here:

Beh, non ho alcuna risposta specifica, ho appena cambiato la mia struttura dei file XML. Ho appena spostato lo Spinner sopra GraphView. Beh, non è per via dell'adattatore. Adattatori stati toccati su tutti i dispositivi, ma app è schiantato solo in LG

Come suggerito qui: Question with no answers, but issue solved in the comments (or extended in chat)

0

Fino a che/(come noi) non avete una risposta perfetta, provare a racchiudere le dichiarazioni in una prova e la cattura di blocco, in modo che si può ottenere un indizio su dove l'iterazione (su ciò che indice) sta fallendo ...

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(); 
    } 
+0

L'op ha risolto il problema, se si guarda nei commenti. –

Problemi correlati