diff options
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index b1d3d450a7f8..81fc96619128 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -6096,8 +6096,15 @@ public final class ViewRootImpl implements ViewParent, if (source != null) { AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider(); if (provider != null) { - AccessibilityNodeInfo node = provider.createAccessibilityNodeInfo( - AccessibilityNodeInfo.getVirtualDescendantId(sourceNodeId)); + final int virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId( + sourceNodeId); + final AccessibilityNodeInfo node; + if (virtualNodeId == AccessibilityNodeInfo.UNDEFINED_ITEM_ID) { + node = provider.createAccessibilityNodeInfo( + AccessibilityNodeProvider.HOST_VIEW_ID); + } else { + node = provider.createAccessibilityNodeInfo(virtualNodeId); + } setAccessibilityFocus(source, node); } } @@ -6135,8 +6142,14 @@ public final class ViewRootImpl implements ViewParent, if (provider != null) { final int virtualChildId = AccessibilityNodeInfo.getVirtualDescendantId( mAccessibilityFocusedVirtualView.getSourceNodeId()); - mAccessibilityFocusedVirtualView = provider.createAccessibilityNodeInfo( - virtualChildId); + if (virtualChildId == AccessibilityNodeInfo.UNDEFINED_ITEM_ID) { + mAccessibilityFocusedVirtualView = provider + .createAccessibilityNodeInfo( + AccessibilityNodeProvider.HOST_VIEW_ID); + } else { + mAccessibilityFocusedVirtualView = provider + .createAccessibilityNodeInfo(virtualChildId); + } } } } |