java.lang.IndexOutOfBoundsException:索引13无效,大小为13

java.lang.IndexOutOfBoundsException:索引13无效,大小为13,java,android,andengine,Java,Android,Andengine,我收到一些奇怪的错误,导致我的android应用程序崩溃。这是一个测验应用程序。所以,当用户正确回答了2/3的问题,然后单击“下一步”按钮,它就会崩溃。并显示索引13错误。但我不知道该去哪里修理/找。这是我的代码片段 public Vector<Sprite> defaultTile; private void GameResults() { if(result.equals("right")) { GameOver

我收到一些奇怪的错误,导致我的android应用程序崩溃。这是一个测验应用程序。所以,当用户正确回答了2/3的问题,然后单击“下一步”按钮,它就会崩溃。并显示索引13错误。但我不知道该去哪里修理/找。这是我的代码片段

public Vector<Sprite> defaultTile;

private void GameResults()
{
    if(result.equals("right"))      
    {           
        GameOver();
        Log.e("Gaa", "Right Here ->");
    }
}

private void GameOver() {
{
    for (int i = 0; i < defaultTile.size(); i++) {
        defaultTile.get(i).setVisible(false);               
    }
    for (int i = 0; i < defaultTile.size(); i++) 
    {
        unregisterTouchArea(defaultTile.get(i));                
    }
    questionText.detachSelf();   
}   

@Override
public boolean onAreaTouched(TouchEvent event, ITouchArea area, float posX,
        float posY) {

    if(event.isActionUp())
    {
        if(area instanceof Sprite)
        {
            Sprite sprite = (Sprite)area;
            int userData = (Integer) sprite.getUserData();
            switch(userData) 
            {
            case BTN_NEXT:                              
                if(gameState.equals("alpha") && tickBg.isVisible())
                {                       
                    countdown.cancel();                         
                    GameResults();  
                }           

                break;
            }
        }
    }
}   
更新


这是我在编程中的完整类文件

,索引通常从0开始,因此如果有9项,最高索引将是8项

实际错误是从正在使用的库中的某些代码中抛出的

org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008)
很可能您正在一个单独的线程中更改列表,而库也在与列表交互



这通常发生在您从屏幕上删除某些内容而不在updateThread上执行时。确保在任何地方都可以像这样移除您称之为的项目

08-09 13:30:50.246: W/dalvikvm(919): threadid=12: thread exiting with uncaught exception (group=0x409c01f8)
08-09 13:30:50.276: E/AndroidRuntime(919): FATAL EXCEPTION: GLThread
08-09 13:30:50.276: E/AndroidRuntime(919): java.lang.IndexOutOfBoundsException: Invalid index 9, size is 9
08-09 13:30:50.276: E/AndroidRuntime(919):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
08-09 13:30:50.276: E/AndroidRuntime(919):  at java.util.ArrayList.get(ArrayList.java:304)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onDrawChildren(Entity.java:1000)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onManagedDraw(Entity.java:993)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.shape.Shape.onManagedDraw(Shape.java:120)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onDraw(Entity.java:875)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onDrawChildren(Entity.java:1000)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onManagedDraw(Entity.java:993)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.scene.Scene.onManagedDraw(Scene.java:233)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.entity.Entity.onDraw(Entity.java:875)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.engine.Engine.onDrawScene(Engine.java:517)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.engine.Engine.onDrawFrame(Engine.java:509)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.opengl.view.RenderSurfaceView$Renderer.onDrawFrame(RenderSurfaceView.java:154)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.opengl.view.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:617)
08-09 13:30:50.276: E/AndroidRuntime(919):  at org.anddev.andengine.opengl.view.GLSurfaceView$GLThread.run(GLSurfaceView.java:549)
runOnUpdateThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
   //remove/detach your stuff in here
}
});

请参见类似的问题-

错误发生在哪一行?我觉得你发布的代码中不应该出现异常。请在你有一个大小为9的arraylist的地方给出正确的代码,并且对该列表的get调用正在尝试获取索引9处的项目。对于大小为9的arraylist,最高索引将为8,因为索引从0开始。即列表中的9项将有索引0、1、2、3、4、5、6、7、8。可能在某个地方存在线程问题。实体类不是线程安全的。相关吗?但我没有使用这样的东西:(这里是完整的类这里是完整的项目链接@robadobt该行在库中,它是从OpenGL渲染循环调用的。我将扩展我的answer@jquery404“我已经包括了我认为现在应该解决的问题。”Robadob解释得很好。这就是问题所在。你的解决方案奏效了。谢谢你的朋友。
runOnUpdateThread(new Runnable() {
@Override
public void run() {
    questionText.detachSelf();
}
});
runOnUpdateThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
   //remove/detach your stuff in here
}
});