键数组已定义如下:
keys = new char[] {resolv, 'А', 'Б', 'В', 'Г', 'Д', 'Е',
'Ё', 'Ж', 'З', 'И', 'Й', 'К',
'Л', 'М', 'Н', 'О', 'П', 'Р',
'С', 'Т', 'У', 'Ф', 'Х', 'Ц',
'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь',
'Э', 'Ю', 'Я'};
'resolv' 是 0x00 的常量 char 值,但这与此问题无关。
现在,此代码有时会引发“java.lang.ArrayIndexOutOfBoundsException: length=34; index=34”异常:
protected void LoadKeyRects() {
keyRects = new Rect[keys.length];
// Solve key
keyRects[0] = resRect;
// Rest of keys
int x, y;
for (int i=1; i<keys.length; i++) {
y = 214 + ( 87 * ((i-1)/11));
x = 7 + (((i-1)%11)*71);
keyRects[i] = new Rect (x, y, x+71, y+87);
}
}
到目前为止,我自己无法重现该错误,但我已经从第三方设备中的 BugSense 获得了足够的报告来关注它。似乎有时 keyRects[i] 可能指的是 keyRects[keys.length] 尽管 i
有任何想法吗?