Java.lang.IndexOutOfBoundsException: El índice no válido 13, el tamaño es 13

Estoy recibiendo un error extraño que estrellar mi aplicación Android. Es una aplicación de prueba. Así que cuando la respuesta del usuario 2/3 pregunta correctamente, haga clic en el siguiente botón que se bloquea. Y mostrar el índice 13 de error. Pero no pude averiguar dónde arreglar / buscar. Aquí está mi fragmento de código.

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

Los detalles del gato de registro son como esto

 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) 

ACTUALIZAR

Aquí está mi archivo de clase completo http://jquery404.com/file/GameScene.txt

En los índices de programación a menudo comienzan en 0, por lo que si tiene 9 elementos, el índice más alto sería 8.

El error real se está lanzando desde algún código dentro de la biblioteca que está utilizando

 org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008) 

Es probable que esté cambiando la lista en un hilo independiente, mientras que la biblioteca también está interactuando con la lista.


Del proyecto gcode ;

  public void onManagedDrawChildren(final Camera pCamera) { final ArrayList<IEntity> children = this.mChildren; final int childCount = children.size(); for(int i = 0; i < childCount; i++) { children.get(i).onDraw(pCamera); } } 

Como esto se ejecuta en un subproceso separado, es probable que esté quitando un objeto de los niños ArrayList mientras el bucle está iterando. Para arreglar esto, debe llamar a sus cambios a los niños ArrayList como jmr499485 explica en su respuesta.

Java.lang.IndexOutOfBoundsException: El índice no válido 13, el tamaño es 13

El único elemento en su código puedo ver que sería la causa de esta es la declaración questionText.detachSelf(); Que usted ha utilizado en muchos lugares. En su lugar, debe utilizar;

 runOnUpdateThread(new Runnable() { @Override public void run() { questionText.detachSelf(); } }); 

Esto suele suceder cuando se elimina algo de la pantalla y no lo hace en el updateThread. Asegúrese de que en cualquier lugar que está eliminando elementos que lo llaman así

 runOnUpdateThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub //remove/detach your stuff in here } }); 

Vea esta pregunta similar – ¿Cómo reparar este error? "Java.lang.IndexOutOfBoundsException"

  • Nombre de paquete alias o apodo
  • ¿Por qué no puedo instanciar este Fragmento en Android?
  • Com.tools.fd.runtime.BootstrapApplication no se ejecutará a menos que actualice los servicios de Google Play
  • ¿Hay una manera de determinar si es posible llamar a un dialog.dismiss () sin vacío try-catch bloque?
  • Los animadores sólo se pueden ejecutar en temas Looper Android
  • Android Service lee localStorage?
  • No se puede encontrar la clase de símbolo Intent
  • Establecer el ancho del botón en Android
  • ¿Hay alguna manera de establecer un parámetro de petición base que se incluirá en cada solicitud hecha con la biblioteca de Retrofit de Square?
  • Guardar y restaurar WebView en una aplicación integrada de PhoneGap
  • Botón personalizado en la barra de título del cuadro de diálogo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.