Android 删除并添加到列表时索引超出范围异常
当我运行应用程序并触摸位图时,有时会出现应用程序崩溃 以下是错误:Android 删除并添加到列表时索引超出范围异常,android,list,Android,List,当我运行应用程序并触摸位图时,有时会出现应用程序崩溃 以下是错误: at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) at java.util.ArrayList.get(ArrayList.java:304) at com.example.Game.GFXSurface$GameSurface.run(GFXSurface.java:135) at java.lang.Thread.run(Thr
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
at java.util.ArrayList.get(ArrayList.java:304)
at com.example.Game.GFXSurface$GameSurface.run(GFXSurface.java:135)
at java.lang.Thread.run(Thread.java:864)
如果我移除球,则移除和球。添加一切正常,但不会生成新球,而在运行方法中,移除和添加一切正常:
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
GameSurface gamesurface = new GameSurface(this);
x = event.getX();
y = event.getY();
Bitmap ball = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
for (int i = 0; i < 4; i++)
if (ourSurfaceView.MouseOnDot(ball) && x >= ballX[i]
&& x <= ballX[i] + 72) {
balls.remove(i);
balls.add(i, gamesurface.RandomBall());
ChangingY[i] = 0;
if (speed <= 7)
speed += 0.1;
}
return false;
}
@覆盖
公共布尔onTouch(视图v,运动事件){
//TODO自动生成的方法存根
GameSurface GameSurface=新的GameSurface(此);
x=event.getX();
y=event.getY();
位图球=BitmapFactory.decodeResource(getResources(),
R.可牵引ic_发射器);
对于(int i=0;i<4;i++)
如果(ourSurfaceView.MouseOnDot(ball)和&x>=ballX[i]
&&x错误表示用于访问ArrayList的索引大于ArrayList大小
尝试而不是for(inti=0;i<4;i++)使用for(inti=0;i
或者当你使用球时。移除(i)首先检查我是否显示你使用球的部位balls.get()
@Override
public void run() {
for (int j = 0; j < 4; j++) {
balls.add(j, RandomBall());
}
while (isRunning) {
if (!ourHolder.getSurface().isValid())
continue;
Canvas canvas = ourHolder.lockCanvas();
canvas.drawRGB(02, 02, 150);
for (int i = 0; i < 4; i++) {
ballX[i] = i * 155;
canvas.drawBitmap(balls.get(i), ballX[i], ChangingY[i],
null);
if (ChangingY[i] <= canvas.getHeight()) {
ChangingY[i] += 1 * speed;
} else if (ChangingY[i] > canvas.getHeight()) {
ChangingY[i] = 0;
if (speed <= 5)
speed += 0.25;
balls.remove(i);
balls.add(i, RandomBall());
}
}
// }
ourHolder.unlockCanvasAndPost(canvas);
}
}