数组创建 - Zygote错误

时间:2014-07-10 11:28:22

标签: android arrays dynamic nullpointerexception

我对Android比较陌生,我想创建一个大小增加的数组,我声明了这样一个数组:

private Sprite something[]; //sprite is my custom class that does sprites

我想添加这样的元素,但它给了我错误......

    something[i++] = new Sprite(spriteSheet,numRows,numColumns,true,x,y);
//i is number of elements and Sprite(...) is the constructor

有人可以告诉我这里我做错了什么,为什么我得到了zygote错误和空指针异常? 谢谢!

1 个答案:

答案 0 :(得分:1)

Java并不像Javascript那样真正起作用。根据{{​​1}},数组具有固定的大小,something = new Sprite[10];的元素索引为something

然而,您可以使用0 to 9.,然后List<Sprite> something = new ArrayList<Sprite>();来实现您想要的功能。

编辑:

ArrayList的迭代工作原理如下:

something.add(new Sprite(spriteSheet, numRows, numColumns, true, x, y));

但是,以下声明:

List<Sprite> sprites = new ArrayList<Sprite>();
for(Sprite sprite : sprites)
{
    sprite.print();
}

将抛出ConcurrentModificationException。

因此,您可以手动使用迭代器:

List<Sprite> sprites = new ArrayList<Sprite>();
for(Sprite sprite : sprites)
{
    sprites.remove(sprite);
}

或者,当我需要在迭代期间修改列表中的元素时,我使用以下内容:

List<Sprite> sprites = new ArrayList<Sprite>();
Iterator<Sprite> iterator = sprites.iterator();
while(iterator.hasNext())
{
    Sprite sprite = iterator.next();
    ...
    iterator.remove();
}

虽然如果我没记错的话,迭代器是推荐的方法。