diff --git a/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java b/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java index cc1ad909e9e..057f4159057 100644 --- a/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java +++ b/lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java @@ -186,6 +186,9 @@ public void startListeningForBackCallbacks( @DoNotInline @Override public void stopListeningForBackCallbacks(@NonNull View view) { + if (onBackInvokedCallback == null) { + return; + } OnBackInvokedDispatcher onBackInvokedDispatcher = view.findOnBackInvokedDispatcher(); if (onBackInvokedDispatcher == null) { return; diff --git a/lib/java/com/google/android/material/navigation/NavigationView.java b/lib/java/com/google/android/material/navigation/NavigationView.java index e125fbdfcde..e87273265c3 100644 --- a/lib/java/com/google/android/material/navigation/NavigationView.java +++ b/lib/java/com/google/android/material/navigation/NavigationView.java @@ -476,6 +476,8 @@ protected void onDetachedFromWindow() { DrawerLayout drawerLayout = (DrawerLayout) parent; drawerLayout.removeDrawerListener(backDrawerListener); } + + backOrchestrator.stopListeningForBackCallbacks(); } @Override diff --git a/lib/java/com/google/android/material/search/SearchView.java b/lib/java/com/google/android/material/search/SearchView.java index 5180cfd39ba..7124da52878 100644 --- a/lib/java/com/google/android/material/search/SearchView.java +++ b/lib/java/com/google/android/material/search/SearchView.java @@ -265,6 +265,13 @@ protected void onAttachedToWindow() { MaterialShapeUtils.setParentAbsoluteElevation(this); } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + + backOrchestrator.stopListeningForBackCallbacks(); + } + @Override @NonNull public CoordinatorLayout.Behavior getBehavior() {