From 5b860719a30862a457f8c8aa9222272a3b43a433 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Mon, 17 Apr 2017 16:40:16 -0700 Subject: [PATCH] Handle edge-case where no focusables exist cluster navigation was previously crashing if there was nothing focusable.. Bug: 37438383 Test: Added CTS: ContentPaneFocusTest#testNoFocusablesInContent Ran against support-v7-demos Toolbar demos to verify crash didn't occur Change-Id: Ia1382cec138a948d080aeded4d38735983df2152 --- core/java/android/view/ViewRootImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index a7ececf6c7820..4eeee6ca96bf5 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -4665,7 +4665,8 @@ public final class ViewRootImpl implements ViewParent, if (focused == null && mView.restoreDefaultFocus()) { return true; } - View cluster = focused.keyboardNavigationClusterSearch(null, direction); + View cluster = focused == null ? keyboardNavigationClusterSearch(null, direction) + : focused.keyboardNavigationClusterSearch(null, direction); // Since requestFocus only takes "real" focus directions (and therefore also // restoreFocusInCluster), convert forward/backward focus into FOCUS_DOWN.