Loading core/java/android/view/FocusFinder.java +10 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,8 @@ public class FocusFinder { private View findNextUserSpecifiedFocus(ViewGroup root, View focused, int direction) { // check for user specified next focus View userSetNextFocus = focused.findUserSetNextFocus(root, direction); View cycleCheck = userSetNextFocus; boolean cycleStep = true; // we want the first toggle to yield false while (userSetNextFocus != null) { if (userSetNextFocus.isFocusable() && userSetNextFocus.getVisibility() == View.VISIBLE Loading @@ -201,6 +203,14 @@ public class FocusFinder { return userSetNextFocus; } userSetNextFocus = userSetNextFocus.findUserSetNextFocus(root, direction); if (cycleStep = !cycleStep) { cycleCheck = cycleCheck.findUserSetNextFocus(root, direction); if (cycleCheck == userSetNextFocus) { // found a cycle, user-specified focus forms a loop and none of the views // are currently focusable. break; } } } return null; } Loading Loading
core/java/android/view/FocusFinder.java +10 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,8 @@ public class FocusFinder { private View findNextUserSpecifiedFocus(ViewGroup root, View focused, int direction) { // check for user specified next focus View userSetNextFocus = focused.findUserSetNextFocus(root, direction); View cycleCheck = userSetNextFocus; boolean cycleStep = true; // we want the first toggle to yield false while (userSetNextFocus != null) { if (userSetNextFocus.isFocusable() && userSetNextFocus.getVisibility() == View.VISIBLE Loading @@ -201,6 +203,14 @@ public class FocusFinder { return userSetNextFocus; } userSetNextFocus = userSetNextFocus.findUserSetNextFocus(root, direction); if (cycleStep = !cycleStep) { cycleCheck = cycleCheck.findUserSetNextFocus(root, direction); if (cycleCheck == userSetNextFocus) { // found a cycle, user-specified focus forms a loop and none of the views // are currently focusable. break; } } } return null; } Loading