diff options
| author | Yabin Huang <yabinh@google.com> | 2020-06-10 15:37:59 -0700 |
|---|---|---|
| committer | Yabin Huang <yabinh@google.com> | 2020-07-24 22:03:51 +0000 |
| commit | 18048e074b88671efda2c07b82426085b57c87de (patch) | |
| tree | 7d0a80fef388406305f5643da7dfd99697015493 /core/java/android/view/FocusFinder.java | |
| parent | 5df07126d5741970d757767cf9d3eacaf39876cf (diff) | |
Update FocusFinder
Don't return the current view when finding the next or previous view.
Bug: 158492287
Test: atest cts/tests/tests/view/src/android/view/cts/FocusFinderTest.java
atest frameworks/base/core/tests/coretests/src/android/view/FocusFinderTest.java
Change-Id: Ib5c1854d1a13b9469ca55dfbf0be61bead47e29e
(cherry picked from commit 713af5fdd39a2b56efe89d1125d6864f92c6298f)
Diffstat (limited to 'core/java/android/view/FocusFinder.java')
| -rw-r--r-- | core/java/android/view/FocusFinder.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/core/java/android/view/FocusFinder.java b/core/java/android/view/FocusFinder.java index 713cfb48c95f..064bc6947fc4 100644 --- a/core/java/android/view/FocusFinder.java +++ b/core/java/android/view/FocusFinder.java @@ -311,6 +311,9 @@ public class FocusFinder { } final int count = focusables.size(); + if (count < 2) { + return null; + } switch (direction) { case View.FOCUS_FORWARD: return getNextFocusable(focused, focusables, count); @@ -373,29 +376,29 @@ public class FocusFinder { } private static View getNextFocusable(View focused, ArrayList<View> focusables, int count) { + if (count < 2) { + return null; + } if (focused != null) { int position = focusables.lastIndexOf(focused); if (position >= 0 && position + 1 < count) { return focusables.get(position + 1); } } - if (!focusables.isEmpty()) { - return focusables.get(0); - } - return null; + return focusables.get(0); } private static View getPreviousFocusable(View focused, ArrayList<View> focusables, int count) { + if (count < 2) { + return null; + } if (focused != null) { int position = focusables.indexOf(focused); if (position > 0) { return focusables.get(position - 1); } } - if (!focusables.isEmpty()) { - return focusables.get(count - 1); - } - return null; + return focusables.get(count - 1); } private static View getNextKeyboardNavigationCluster( |
