2012-02-19 24 views
7

Empiezo a desarrollar en Android, y trato de modificar el código Snake para incluir una llamada al navegador para desplaying página web, cuando ejecuto mi aplicación que muestra la página en el brwser, pero el problema cuando vuelvo a la aplicación de serpiente que muestra mensajes que la aplicación ha parado de forma inesperada, y el logCat espectáculo excepción anthe continuaciónError java.lang.IndexOutOfBoundsException: el índice 0 no es válido, el tamaño es 0 en mi programa android

02-19 01:06:50.920: W/dalvikvm(3394): threadid=1: thread exiting with uncaught exception (group=0x4015a760) 
02-19 01:06:50.930: E/AndroidRuntime(3394): FATAL EXCEPTION: main 
02-19 01:06:50.930: E/AndroidRuntime(3394): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at java.util.ArrayList.get(ArrayList.java:308) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.example.android.snake.SnakeView.updateSnake(SnakeView.java:448) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.example.android.snake.SnakeView.update(SnakeView.java:403) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.example.android.snake.SnakeView.setMode(SnakeView.java:335) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.example.android.snake.SnakeView.onKeyDown(SnakeView.java:278) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.KeyEvent.dispatch(KeyEvent.java:2387) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.View.dispatchKeyEvent(View.java:4569) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1113) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1113) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1113) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1113) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1692) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1260) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.app.Activity.dispatchKeyEvent(Activity.java:2231) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1648) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewRoot.deliverKeyEventPostIme(ViewRoot.java:2730) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2703) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1958) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.os.Looper.loop(Looper.java:126) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at java.lang.reflect.Method.invoke(Method.java:491) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
02-19 01:06:50.930: E/AndroidRuntime(3394):  at dalvik.system.NativeStart.main(Native Method) 
02-19 01:08:07.450: D/A  
+0

El código de mi actividad – user23

+0

El código de mi actividad – user23

+0

Le indica que está tratando de acceder a una ArrayList más allá de sus límites. –

Respuesta

11

creo que es bastante claro, aquí

en com.example.android.snake.SnakeView.updateSnake (Sna keView.java:448)

que está accediendo a una ArrayList que se ha creado una instancia como new ArrayList(0), bastante sencillo si al menos leer el error.

ArrayList Los objetos están diseñados para cambiar el tamaño automáticamente, pero si no coloca nada en una lista de matriz de tamaño cero, entonces obtendrá este error.

+5

'new ArrayList [0]'? –

+0

Sí, error ortográfico, lo siento :) – Jack

7

Tiene ArrayList con 0 elementos. y en la clase SnakeView en el método updateSnake() en la línea 448, intenta acceder a la lista de arrays en el índice 0. En el índice 0 es el primer elemento de usted ArrayList, pero si está vacío no hay ningún elemento en el índice 0. Entonces obtiene un IndexOutOfBoundsException

Cuestiones relacionadas