Fix IllegalStateException of KeyDetector

A KeyDetector without Keyboard may exist in some rare cases. This
change eliminates throwing IllegalStateException and checks explicitly
against null.

Bug: 6891020
Change-Id: I29ec3e9f10484f30288fac76f0c45b3707bc2259
main
Tadashi G. Takaoka 2012-08-06 10:50:19 +09:00
parent 0ef87868c2
commit 4e9e6cd154
2 changed files with 7 additions and 4 deletions

View File

@ -37,8 +37,9 @@ public class KeyDetector {
} }
public void setKeyboard(Keyboard keyboard, float correctionX, float correctionY) { public void setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
if (keyboard == null) if (keyboard == null) {
throw new NullPointerException(); throw new NullPointerException();
}
mCorrectionX = (int)correctionX; mCorrectionX = (int)correctionX;
mCorrectionY = (int)correctionY; mCorrectionY = (int)correctionY;
mKeyboard = keyboard; mKeyboard = keyboard;
@ -58,8 +59,6 @@ public class KeyDetector {
} }
public Keyboard getKeyboard() { public Keyboard getKeyboard() {
if (mKeyboard == null)
throw new IllegalStateException("keyboard isn't set");
return mKeyboard; return mKeyboard;
} }

View File

@ -39,7 +39,11 @@ public class MoreKeysDetector extends KeyDetector {
Key nearestKey = null; Key nearestKey = null;
int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare; int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare;
for (final Key key : getKeyboard().mKeys) { final Keyboard keyboard = getKeyboard();
if (keyboard == null) {
throw new NullPointerException("Keyboard isn't set");
}
for (final Key key : keyboard.mKeys) {
final int dist = key.squaredDistanceToEdge(touchX, touchY); final int dist = key.squaredDistanceToEdge(touchX, touchY);
if (dist < nearestDist) { if (dist < nearestDist) {
nearestKey = key; nearestKey = key;