diff options
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index cda58e383bf9..4cac85f74424 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -7511,7 +7511,6 @@ public final class ViewRootImpl implements ViewParent, animationCallback.onBackCancelled(); } else { topCallback.onBackInvoked(); - return FINISH_HANDLED; } break; } @@ -7519,14 +7518,16 @@ public final class ViewRootImpl implements ViewParent, if (keyEvent.getAction() == KeyEvent.ACTION_UP) { if (!keyEvent.isCanceled()) { topCallback.onBackInvoked(); - return FINISH_HANDLED; } else { Log.d(mTag, "Skip onBackInvoked(), reason: keyEvent.isCanceled=true"); } } } - - return FINISH_NOT_HANDLED; + if (keyEvent.getAction() == KeyEvent.ACTION_UP) { + // forward a cancelled event so that following stages cancel their back logic + keyEvent.cancel(); + } + return FORWARD; } @Override |