ConcurrentModificationError on Vector - PullRequest
       11

ConcurrentModificationError on Vector

0 голосов
/ 30 апреля 2011

То, что я пытаюсь сделать здесь, это удалить «цветение» из вектора при обнаружении столкновения. Тем не менее, я продолжаю получать ConcurrentModificationError. Это портит, когда я пытаюсь удалить цветок из вектора. Я пытался сделать это многими способами. В один момент, когда было обнаружено, что цветок должен быть удален, я сохранил его положение в векторе, а затем попытался удалить его при просмотре следующей позиции в списке. Я думаю, что это единственный метод, который вам нужно увидеть. Кто-нибудь может увидеть, что я могу сделать, чтобы это исправить ??

private synchronized void DrawBlossoms(Canvas c) // method to draw flowers on screen and test for collision
{
    Canvas canvas = c;
    for(Blossom blossom: blossomVector)
    {
                blossom.Draw(canvas);
                if (blossom.hit(box_x,box_y, box_x + boxWidth, box_y + boxHeight, blossomVector) == true)
                {
                    Log.v(TAG, "REMOVE THIS!");
                    //blossomVector.remove(blossom);

                }
    }
}

1 Ответ

1 голос
/ 30 апреля 2011

Решением является использование итератора и синхронизация по вектору.

synchronize(blossomVector)  
{  
    Iterator dataIterator = blossomVector.iterator();  
    while (dataIterator.hasNext())  
    {  
        //... do your stuff here and use dataIterator.remove()

    }  
}  
...