I have found a same question in I used synchronized list, and i still get ConcurrentModificationException, but i didn't find a correct answer.
Here is how i defined my synchronized
list:
private List<ActionItemClickListener> actionItemClickListeners = Collections.synchronizedList(new ArrayList<ActionItemClickListener>());
And here is how i used it:
@Override
public void onBackPressed() {
boolean isConsume = false;
synchronized (actionItemClickListeners) {
//ConcurrentModificationException occur here
for (ActionItemClickListener listener : actionItemClickListeners) {
isConsume = isConsume | listener.onSystemBackPressed();
}
}
if(!isConsume) {
pendingFragment = null;
pendingTag = null;
currentFragmentTag = null;
super.onBackPressed();
}
}
public void addActionItemClickListener(ActionItemClickListener listener) {
synchronized (actionItemClickListeners) {
if (listener != null)
actionItemClickListeners.add(listener);
}
}
public void removeActionItemClickListener(ActionItemClickListener listener) {
synchronized (actionItemClickListeners) {
if (listener != null)
actionItemClickListeners.remove(listener);
}
}
Why i'm still getting ConcurrentModificationException
???