Skip to content

Commit d13bfdf

Browse files
committed
[Predictive Back] Update SearchView and NavigationView to unregister back callbacks when detached from window
Resolves #4176 PiperOrigin-RevId: 633969673
1 parent a89e38c commit d13bfdf

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

lib/java/com/google/android/material/motion/MaterialBackOrchestrator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ public void startListeningForBackCallbacks(
186186
@DoNotInline
187187
@Override
188188
public void stopListeningForBackCallbacks(@NonNull View view) {
189+
if (onBackInvokedCallback == null) {
190+
return;
191+
}
189192
OnBackInvokedDispatcher onBackInvokedDispatcher = view.findOnBackInvokedDispatcher();
190193
if (onBackInvokedDispatcher == null) {
191194
return;

lib/java/com/google/android/material/navigation/NavigationView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,8 @@ protected void onDetachedFromWindow() {
476476
DrawerLayout drawerLayout = (DrawerLayout) parent;
477477
drawerLayout.removeDrawerListener(backDrawerListener);
478478
}
479+
480+
backOrchestrator.stopListeningForBackCallbacks();
479481
}
480482

481483
@Override

lib/java/com/google/android/material/search/SearchView.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,13 @@ protected void onAttachedToWindow() {
265265
MaterialShapeUtils.setParentAbsoluteElevation(this);
266266
}
267267

268+
@Override
269+
protected void onDetachedFromWindow() {
270+
super.onDetachedFromWindow();
271+
272+
backOrchestrator.stopListeningForBackCallbacks();
273+
}
274+
268275
@Override
269276
@NonNull
270277
public CoordinatorLayout.Behavior<SearchView> getBehavior() {

0 commit comments

Comments
 (0)