Fix NullPointerException in ListView
There is a NullPointerException in `handleHorizontalFocusWithinListItem()` because `selectedView.findFocus()` returns null and then there is no null check when when the assigned variable `currentFocus` is used, although `View.findFocus()` states that it may return null. Change-Id: I6897027e9a2a238d9283e6b9f5146198989fcac0
This commit is contained in:
committed by
David Pursehouse
parent
af5bd75b3d
commit
827bb445d1
@@ -2420,10 +2420,15 @@ public class ListView extends AbsListView {
|
||||
(ViewGroup) selectedView, currentFocus, direction);
|
||||
if (nextFocus != null) {
|
||||
// do the math to get interesting rect in next focus' coordinates
|
||||
currentFocus.getFocusedRect(mTempRect);
|
||||
offsetDescendantRectToMyCoords(currentFocus, mTempRect);
|
||||
offsetRectIntoDescendantCoords(nextFocus, mTempRect);
|
||||
if (nextFocus.requestFocus(direction, mTempRect)) {
|
||||
Rect focusedRect = mTempRect;
|
||||
if (currentFocus != null) {
|
||||
currentFocus.getFocusedRect(focusedRect);
|
||||
offsetDescendantRectToMyCoords(currentFocus, focusedRect);
|
||||
offsetRectIntoDescendantCoords(nextFocus, focusedRect);
|
||||
} else {
|
||||
focusedRect = null;
|
||||
}
|
||||
if (nextFocus.requestFocus(direction, focusedRect)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -2556,8 +2561,10 @@ public class ListView extends AbsListView {
|
||||
if (mItemsCanFocus && (focusResult == null)
|
||||
&& selectedView != null && selectedView.hasFocus()) {
|
||||
final View focused = selectedView.findFocus();
|
||||
if (!isViewAncestorOf(focused, this) || distanceToView(focused) > 0) {
|
||||
focused.clearFocus();
|
||||
if (focused != null) {
|
||||
if (!isViewAncestorOf(focused, this) || distanceToView(focused) > 0) {
|
||||
focused.clearFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user