2015-11-23 28 views
18

मैंने ऐप पर बनाया है जिसमें उपयोगकर्ता को Spinner से एक पूर्णांक चुनना है। मैं Adapter का उपयोग कर Spinner पर पॉप्युलेट कर रहा हूं। कोड इस तरह है।ऐप क्रैश हो रहा है। (एलजी मोबाइल) (java.lang.IllegalStateException: Iteration पहले ही शुरू हो गया है)

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) 

कोई संकेत है कि मैं इस समस्या को कैसे हल कर सकता हूं।

+0

मैं (एंड्रॉयड 5.0.2) के साथ एक LG G2 पर एक ही मुद्दा है, लेकिन है मेरी नेक्सस 5 (एंड्रॉयड 6.0) और एक एलजी जी -4 पर (एंड्रॉयड 6.0) स्क्रॉल काम करता है पर ठीक। – zkminusck

+0

एलजी जी 3 (एंड्रॉइड 5.0.1) और एलजी लियोन (एंड्रॉइड 5.0.1) – zkminusck

+0

पर भी कोई समस्या नहीं है, मैंने इस मुद्दे को हल किया। असल में, यह लेआउट मुद्दा था। स्पिनर को अन्य पृष्ठभूमि लेआउट के शीर्ष पर होना चाहिए। पहले, 'ग्राफ़ व्यू' चार्ट सामने लेआउट थे लेकिन अब मैंने स्पिनरों को फ्रंट लेआउट पर रखा है और यह ठीक काम कर रहा है। –

उत्तर

1

यहाँ मेरी समाधान है। यह एक आदर्श समाधान नहीं हो सकता है लेकिन मेरे लिए काम किया। अपने मूल XML फ़ाइल में, मैं spinner's Layout ऊपर GraphView का उपयोग कर, इस

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

the comments से एक उत्तर पोस्ट:

इस मुद्दे को हल किया। असल में, यह लेआउट मुद्दा था। स्पिनर को अन्य पृष्ठभूमि लेआउट के शीर्ष पर होना चाहिए। पहले, ग्राफ़ व्यू चार्ट सामने लेआउट थे लेकिन अब मैंने स्पिनरों को फ्रंट लेआउट पर रखा है और यह ठीक काम कर रहा है।

और here:

ठीक है, मैं किसी भी विशिष्ट उत्तर नहीं है, मैं बस अपना एक्सएमएल फ़ाइल संरचना बदल दिया है। बस ग्राफवीव के शीर्ष पर स्पिनर को स्थानांतरित कर दिया। वैसे यह एडाप्टर की वजह से नहीं है। एडेप्टर हर डिवाइस पर छुआ गया लेकिन एप्लिकेशन केवल एलजी

में दुर्घटनाग्रस्त हो गया के रूप में यहाँ का सुझाव दिया: Question with no answers, but issue solved in the comments (or extended in chat)

0
आप तक

/(और साथ ही हम) नहीं है, एक परिपूर्ण उत्तर एक कोशिश में बयान enclosing कोशिश करते हैं और , ब्लॉक को पकड़ने के लिए इतना है कि आप जहां यात्रा (क्या सूचकांक पर) विफल हो रहा है के रूप में एक सुराग मिल सकता है ...

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

ओप ने समस्या को हल किया, अगर आप टिप्पणियों को देखते हैं। –

संबंधित मुद्दे