From ad60bbf5d932b6fcceccf9a0140917164d179d0c Mon Sep 17 00:00:00 2001 From: hunterstich Date: Tue, 27 Jun 2023 03:54:25 +0000 Subject: [PATCH] [Predictive Back] Fixed MaterialBackAnimationHelper.onCancelBackProgress being called twice. PiperOrigin-RevId: 543622236 --- .../material/motion/MaterialBackOrchestrator.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java b/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java index 0ac24ed3dbf..cc1ad909e9e 100644 --- a/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java +++ b/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java @@ -123,11 +123,17 @@ OnBackInvokedCallback createOnBackInvokedCallback(@NonNull MaterialBackHandler b @Override public void onBackStarted(@NonNull BackEvent backEvent) { + if (!isListeningForBackCallbacks()) { + return; + } backHandler.startBackProgress(new BackEventCompat(backEvent)); } @Override public void onBackProgressed(@NonNull BackEvent backEvent) { + if (!isListeningForBackCallbacks()) { + return; + } backHandler.updateBackProgress(new BackEventCompat(backEvent)); } @@ -138,6 +144,9 @@ public void onBackInvoked() { @Override public void onBackCancelled() { + if (!isListeningForBackCallbacks()) { + return; + } backHandler.cancelBackProgress(); } }; @@ -149,6 +158,10 @@ private static class Api33BackCallbackDelegate implements BackCallbackDelegate { @Nullable private OnBackInvokedCallback onBackInvokedCallback; + boolean isListeningForBackCallbacks() { + return onBackInvokedCallback != null; + } + @DoNotInline @Override public void startListeningForBackCallbacks(