2017-06-14 3 views
0

mon accident d'application lorsque je tente de retirer l'objet de la liste de tableau:crash d'application lors de la suppression de la liste élément de tableau

for (ColouredPaths p : mTouches) { 
      if(erase){ 
       if(p!=null) 
       { mTouches.remove(p);} 

      } 

pourquoi cela se passe et comment o fix?

+0

@K. Sopheak Ce n'est pas une version bêta de l'utilisateur c'est ça – rgl

+0

@ K.Sopheak Ce n'est pas une version bêta de l'utilisateur c'est ça – rgl

+1

Non, c'est un comportement Java 'Collections'. Je l'ai expliqué dans ma réponse. –

Répondre

0

Si vous obtenez un ConcurrentException, cela signifie que vous parcourez une liste que vous modifiez. Dans ArrayLists, vous ne pouvez pas faire cela. Essayez d'utiliser un comme Queue cela, au lieu d'un ArrayList:

Queue<ColouredPaths> mTouches = new ConcurrentLinkedQueue<>(); 

Vous pouvez parcourir la même façon, mais il ne devrait pas tomber en panne plus.

+0

vous remercie, vous avez raison – rgl

+0

@rgl Cela a-t-il été corrigé? J'ai utilisé 'ConcurrentLinkedQueue's pendant un moment, et ils semblent bien fonctionner. –

+0

Oui cela fonctionne bien – rgl