我正在尝试将一个类元素添加到绘图视图一侧的数组列表中。遗憾的是,add函数没有添加必需的元素.. 这是我的DrawView类。
请查看drawgame内部和尺寸更改功能。
问题似乎是数组列表的大小保持为0而不是2.因此函数显示IndexOutOfBoundExeption ..
public class DrawView extends View {
int i=0;
float flag=0;
float bubrank=2;
ArrayList<bubble1> bub1 ;
Context mContext;
private int width, hieght;
public DrawView(Context context,AttributeSet attrs){
super(context,attrs);
mContext = context;
bub1 = new ArrayList<bubble1>();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawgame(canvas);
try {
Thread.sleep(15);
} catch (InterruptedException e) {
}
invalidate();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
width = w;
hieght = h;
for (i = 0; i < bubrank; i++) {
bub1.get(i).setbound(0, 0, width, hieght);
}
}
public void drawgame(Canvas canvas) {
canvas.drawColor(Color.DKGRAY);
for (i = 0; i <bubrank; i++)
bub1.add(new bubble1(Color.BLUE, mContext));
bub1.get(0).draw(canvas);
...............................
............................................... .........
请帮助....谢谢你。
答案 0 :(得分:0)
错误不在drawgame()中,而是在循环中的onSizeChanged()中。
for (i = 0; i < bubrank; i++) {
bub1.get(i).setbound(0, 0, width, hieght);
}
问题是onSizeChanged是一个&#34;回调&#34;方法 - 在您调用drawgame()之前,系统会在您不知情的情况下调用它 - ArrayList尚未填充。你需要做教授在射击游戏中所做的事情。
for (i = 0; i < bub1.size(); i++) {
bub1.get(i).setbound(0, 0, width, hieght);
}
这解决了问题...