Skip to content

Commit 5d801c8

Browse files
author
Frederik Götz
committed
Bugfix: java.util.ConcurrentModificationException on Listeners.
1 parent a592298 commit 5d801c8

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

library/src/main/java/com/sothree/slidinguppanel/SlidingUpPanelLayout.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,9 @@ public void setMinFlingVelocity(int val) {
495495
* @param listener
496496
*/
497497
public void addPanelSlideListener(PanelSlideListener listener) {
498-
mPanelSlideListeners.add(listener);
498+
synchronized (mPanelSlideListeners) {
499+
mPanelSlideListeners.add(listener);
500+
}
499501
}
500502

501503
/**
@@ -504,7 +506,9 @@ public void addPanelSlideListener(PanelSlideListener listener) {
504506
* @param listener
505507
*/
506508
public void removePanelSlideListener(PanelSlideListener listener) {
507-
mPanelSlideListeners.remove(listener);
509+
synchronized (mPanelSlideListeners) {
510+
mPanelSlideListeners.remove(listener);
511+
}
508512
}
509513

510514
/**
@@ -633,15 +637,21 @@ public boolean isClipPanel() {
633637
return mClipPanel;
634638
}
635639

640+
636641
void dispatchOnPanelSlide(View panel) {
637-
for (PanelSlideListener l : mPanelSlideListeners) {
638-
l.onPanelSlide(panel, mSlideOffset);
642+
synchronized (mPanelSlideListeners) {
643+
for (PanelSlideListener l : mPanelSlideListeners) {
644+
l.onPanelSlide(panel, mSlideOffset);
645+
}
639646
}
640647
}
641648

649+
642650
void dispatchOnPanelStateChanged(View panel, PanelState previousState, PanelState newState) {
643-
for (PanelSlideListener l : mPanelSlideListeners) {
644-
l.onPanelStateChanged(panel, previousState, newState);
651+
synchronized (mPanelSlideListeners) {
652+
for (PanelSlideListener l : mPanelSlideListeners) {
653+
l.onPanelStateChanged(panel, previousState, newState);
654+
}
645655
}
646656
sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
647657
}

0 commit comments

Comments
 (0)