Fix Snackbar dismisal generating two callbacks
Caused by a call ordering issue when the
SnackbarLayout is removed from it's parent.
BUG: 25072545
Change-Id: I0c264f570e8a010574aa0fe7690bd58c51967f5e
diff --git a/design/src/android/support/design/widget/Snackbar.java b/design/src/android/support/design/widget/Snackbar.java
index d05eedc..a328d98 100644
--- a/design/src/android/support/design/widget/Snackbar.java
+++ b/design/src/android/support/design/widget/Snackbar.java
@@ -596,17 +596,17 @@
}
private void onViewHidden(int event) {
- // First remove the view from the parent (if attached)
- final ViewParent parent = mView.getParent();
- if (parent instanceof ViewGroup) {
- ((ViewGroup) parent).removeView(mView);
- }
+ // First tell the SnackbarManager that it has been dismissed
+ SnackbarManager.getInstance().onDismissed(mManagerCallback);
// Now call the dismiss listener (if available)
if (mCallback != null) {
mCallback.onDismissed(this, event);
}
- // Finally, tell the SnackbarManager that it has been dismissed
- SnackbarManager.getInstance().onDismissed(mManagerCallback);
+ // Lastly, remove the view from the parent (if attached)
+ final ViewParent parent = mView.getParent();
+ if (parent instanceof ViewGroup) {
+ ((ViewGroup) parent).removeView(mView);
+ }
}
/**