diff options
| -rw-r--r-- | core/java/android/widget/GridView.java | 45 | ||||
| -rw-r--r-- | core/java/android/widget/ListView.java | 45 | 
2 files changed, 48 insertions, 42 deletions
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java index 4ed48ff08f90..04b18c1e873d 100644 --- a/core/java/android/widget/GridView.java +++ b/core/java/android/widget/GridView.java @@ -1335,27 +1335,30 @@ public class GridView extends AbsListView {              }              // Attempt to restore accessibility focus, if necessary. -            final View newAccessibilityFocusedView = viewRootImpl.getAccessibilityFocusedHost(); -            if (newAccessibilityFocusedView == null) { -                if (accessibilityFocusLayoutRestoreView != null -                        && accessibilityFocusLayoutRestoreView.isAttachedToWindow()) { -                    final AccessibilityNodeProvider provider = -                            accessibilityFocusLayoutRestoreView.getAccessibilityNodeProvider(); -                    if (accessibilityFocusLayoutRestoreNode != null && provider != null) { -                        final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId( -                                accessibilityFocusLayoutRestoreNode.getSourceNodeId()); -                        provider.performAction(virtualViewId, -                                AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); -                    } else { -                        accessibilityFocusLayoutRestoreView.requestAccessibilityFocus(); -                    } -                } else if (accessibilityFocusPosition != INVALID_POSITION) { -                    // Bound the position within the visible children. -                    final int position = MathUtils.constrain( -                            accessibilityFocusPosition - mFirstPosition, 0, getChildCount() - 1); -                    final View restoreView = getChildAt(position); -                    if (restoreView != null) { -                        restoreView.requestAccessibilityFocus(); +            if (viewRootImpl != null) { +                final View newAccessibilityFocusedView = viewRootImpl.getAccessibilityFocusedHost(); +                if (newAccessibilityFocusedView == null) { +                    if (accessibilityFocusLayoutRestoreView != null +                            && accessibilityFocusLayoutRestoreView.isAttachedToWindow()) { +                        final AccessibilityNodeProvider provider = +                                accessibilityFocusLayoutRestoreView.getAccessibilityNodeProvider(); +                        if (accessibilityFocusLayoutRestoreNode != null && provider != null) { +                            final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId( +                                    accessibilityFocusLayoutRestoreNode.getSourceNodeId()); +                            provider.performAction(virtualViewId, +                                    AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); +                        } else { +                            accessibilityFocusLayoutRestoreView.requestAccessibilityFocus(); +                        } +                    } else if (accessibilityFocusPosition != INVALID_POSITION) { +                        // Bound the position within the visible children. +                        final int position = MathUtils.constrain( +                                accessibilityFocusPosition - mFirstPosition, 0, +                                getChildCount() - 1); +                        final View restoreView = getChildAt(position); +                        if (restoreView != null) { +                            restoreView.requestAccessibilityFocus(); +                        }                      }                  }              } diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 63e13589b3b8..5de67c82cb44 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -1738,27 +1738,30 @@ public class ListView extends AbsListView {              }              // Attempt to restore accessibility focus, if necessary. -            final View newAccessibilityFocusedView = viewRootImpl.getAccessibilityFocusedHost(); -            if (newAccessibilityFocusedView == null) { -                if (accessibilityFocusLayoutRestoreView != null -                        && accessibilityFocusLayoutRestoreView.isAttachedToWindow()) { -                    final AccessibilityNodeProvider provider = -                            accessibilityFocusLayoutRestoreView.getAccessibilityNodeProvider(); -                    if (accessibilityFocusLayoutRestoreNode != null && provider != null) { -                        final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId( -                                accessibilityFocusLayoutRestoreNode.getSourceNodeId()); -                        provider.performAction(virtualViewId, -                                AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); -                    } else { -                        accessibilityFocusLayoutRestoreView.requestAccessibilityFocus(); -                    } -                } else if (accessibilityFocusPosition != INVALID_POSITION) { -                    // Bound the position within the visible children. -                    final int position = MathUtils.constrain( -                            accessibilityFocusPosition - mFirstPosition, 0, getChildCount() - 1); -                    final View restoreView = getChildAt(position); -                    if (restoreView != null) { -                        restoreView.requestAccessibilityFocus(); +            if (viewRootImpl != null) { +                final View newAccessibilityFocusedView = viewRootImpl.getAccessibilityFocusedHost(); +                if (newAccessibilityFocusedView == null) { +                    if (accessibilityFocusLayoutRestoreView != null +                            && accessibilityFocusLayoutRestoreView.isAttachedToWindow()) { +                        final AccessibilityNodeProvider provider = +                                accessibilityFocusLayoutRestoreView.getAccessibilityNodeProvider(); +                        if (accessibilityFocusLayoutRestoreNode != null && provider != null) { +                            final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId( +                                    accessibilityFocusLayoutRestoreNode.getSourceNodeId()); +                            provider.performAction(virtualViewId, +                                    AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); +                        } else { +                            accessibilityFocusLayoutRestoreView.requestAccessibilityFocus(); +                        } +                    } else if (accessibilityFocusPosition != INVALID_POSITION) { +                        // Bound the position within the visible children. +                        final int position = MathUtils.constrain( +                                accessibilityFocusPosition - mFirstPosition, 0, +                                getChildCount() - 1); +                        final View restoreView = getChildAt(position); +                        if (restoreView != null) { +                            restoreView.requestAccessibilityFocus(); +                        }                      }                  }              }  |