From ef8a8ac927ba131c1d4a44bcc97663f389e8f6ac Mon Sep 17 00:00:00 2001 From: Yabin Huang Date: Thu, 16 Jan 2020 13:32:59 -0800 Subject: [PATCH] Don't use View ID to search next focus backward View There might be several Views with the same ID in View hierarchy, and if we search the user specified next focused view by comparing the View ID, it may return the wrong View with the same ID. To fix that, we should compare the View itself. Fixes: 147829061 Test: manual Change-Id: I3eeb68ed3ea30ce9461165eea56227cb81b21929 --- core/java/android/view/View.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 562ed0eb8e704..6724e9d3289d7 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -12602,11 +12602,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, return findViewInsideOutShouldExist(root, mNextFocusForwardId); case FOCUS_BACKWARD: { if (mID == View.NO_ID) return null; - final int id = mID; return root.findViewByPredicateInsideOut(this, new Predicate() { @Override public boolean test(View t) { - return t.mNextFocusForwardId == id; + return t.findViewById(t.mNextFocusForwardId) == View.this; } }); }