Android.getHistorySize и getHistoricalX / Y - PullRequest
       0

Android.getHistorySize и getHistoricalX / Y

2 голосов
/ 15 апреля 2011

Я переопределил метод onTouchEvent() в своем классе View и попытался обработать EventMotion.ACTION_MOVE.

Я использую следующий код:

if (event_.getAction() == MotionEvent.ACTION_MOVE) {  
    historySize = event_.getHistorySize();  
    endX = event_.getHistoricalX(historySize-1);  
}

Я не хочу обсуждать безопасность этого кода.

В Android 2.1-update1 и Android 2.2.1 он работает отлично, но в Android 2.3.1 он вылетает с исключением ArrayIndexOutOfBounds.

Что изменилось в getHistorySize() и getHistoricalX() в Android 2.3.1?

1 Ответ

6 голосов
/ 01 августа 2011

Я только что столкнулся с той же проблемой. Похоже, что после 2.3.x getHistoricalX () и getHistoricalY () теперь выдают ArrayIndexOutOfBounds при передаче отрицательного значения. Ранее они только что вернули первую запись в истории. Это может произойти, когда historySize равен 0, из-за очень короткого нажатия

Таким образом, несмотря на то, что вы не хотите обсуждать безопасность кода, ответом является проверка значения historySize следующим образом. Если historySize == 0, хотя это событие Move, оно на самом деле не перемещалось, так что, по-видимому, вы ничего не хотите делать.

if (event_.getAction() == MotionEvent.ACTION_MOVE) {
historySize = event_.getHistorySize();
if(historySize>0)
endX = event_.getHistoricalX(historySize-1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...