我收到一些奇怪的错误,这使我的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;
}
}
}
}
日志猫的详细信息是这样的
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)
更新
这是我的完整课程文件http://jquery404.com/file/GameScene.txt
在编程中,索引通常从0开始,因此,如果您有9个项目,则最高索引为8。
您所使用的库中的某些代码引发了实际错误
org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008)
库可能也在与列表交互时,您可能在单独的线程中更改列表。
来自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);
}
}
由于这是在单独的线程中运行的,因此您可能正在ArrayList
循环中从子级中删除对象。为了解决这个问题,您应该ArrayList
像jmr499485那样在孩子的回答中称呼您的更改。
我看到的代码中唯一会导致此问题的是questionText.detachSelf();
您在许多地方使用的语句。您应该改用;
runOnUpdateThread(new Runnable() {
@Override
public void run() {
questionText.detachSelf();
}
});
正如标题所说,我的问题是,当我编译时,我在线程“main”java.lang.IndexOutOfBoundsException:Index:1,Size:1中得到了Exception。这是问题产生的部分。 编辑。 我一直在网上寻找解决方案,所以我很确定问题是数组太小,但我仍然不确定如何解决它。我试图让代码的上半部分只从数组中取出数字并将它们放入一个新的数组中。 这是我调用的其他方法。 我已经坚持
我得到错误java.lang.IndexOutOfBoundsException:index:0,size:0。
我正在尝试编写一个lz78代码作为一个学校项目,但我不断得到这个错误: 线程“main”java.lang.IndexOutOfBoundsException异常:索引:20,大小:20 代码如下:
我有一个简单的回收器视图,我想在点击时删除这些项目。根据我单击列表中的某些项目时出现上述错误,我不断遇到崩溃。如果您有类似的问题,以下是我解决它的方法:
我试图迭代元素,在这里我必须为每个元素获取文本体,但在打印第一个元素体之后,下一个元素体我将获得“java.lang.IndexOutOfBoundsException:Index:1,Size:1”。我知道这是非常简单的修复,但我无法修复它。请帮助我解决此问题。 在下面的代码中,当“String text=KpiText.get(i).getText();”第二次打印时出现“java.lang.
我正在尝试从instagram api获取关于特定标记的json数据。从响应im将所有url保存到一个只有字符串url属性的自定义类映像。在instagram的每个回复中,它都有大约20个媒体文件,但我似乎无法构建我的图像列表来显示在我的回收器视图中 Response.enqueue(new Callback(){@override public void onResponse(Call Call