首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在微调器上选择/滚动项目时应用程序崩溃。(LG移动) (java.lang.IllegalStateException:迭代已经开始)

在微调器上选择/滚动项目时应用程序崩溃。(LG移动) (java.lang.IllegalStateException:迭代已经开始)
EN

Stack Overflow用户
提问于 2015-11-23 09:28:00
回答 2查看 894关注 0票数 18

我在应用程序中,用户必须从Spinner中选择一个整数。我正在使用Adapter填充Spinner。代码是这样的。

代码语言:javascript
复制
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上运行它时,每当我在微调器中滚动项目时,应用程序就会崩溃。这个错误是新的,因为我没有发现类似的错误。错误是这样的

代码语言:javascript
复制
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)

任何关于我如何解决这个问题的提示。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-21 08:47:22

这是我的解决方案。这可能不是一个完美的解决方案,但对我来说很有效。在我最初的XML文件中,我在spinner's Layout上使用了GraphView,如下所示

代码语言:javascript
复制
<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>

这个问题是新的,因为我在网上没有发现任何这样的问题。在阅读了不同来源的资料后,我意识到这是布局问题。这就是我当时所做的

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2015-12-19 23:35:27

直到你(和我们一样)没有一个完美的答案,试着把语句包含在try和catch块中,这样你就可以得到迭代在哪里失败的线索(在哪个索引上)……

代码语言:javascript
复制
  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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33862449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档