У меня есть макет, настроенный с прослушивателем жестов для OnTouchEvent()
. Макет содержит listview, и я использую жесты для захвата идентификатора строки в списке. У меня есть следующий код -Android OnTouchEvent: Отладка InputEventConsistencyVerifier сообщения
itemsList.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent evt) {
// TODO Auto-generated method stub
//
int action = evt.getAction();
final String DEBUG_TAG = "DEBUG";
detector.onTouchEvent(evt);
switch(action) {
case (MotionEvent.ACTION_DOWN) :
Log.d(DEBUG_TAG,"Action was DOWN");
return true;
case (MotionEvent.ACTION_MOVE) :
Log.d(DEBUG_TAG,"Action was MOVE");
return true;
case (MotionEvent.ACTION_UP) :
Log.d(DEBUG_TAG,"Action was UP");
return true;
case (MotionEvent.ACTION_CANCEL) :
Log.d(DEBUG_TAG,"Action was CANCEL");
return true;
case (MotionEvent.ACTION_OUTSIDE) :
Log.d(DEBUG_TAG,"Movement occurred outside bounds " +
"of current screen element");
return true;
}
return false;
}
});
детектор является экземпляром GestureDetector. Я в основном использую просто проведите по экрану влево или проведите по экрану правой кнопкой мыши в строке списка.
Всякий раз, когда я прокручиваю влево/вправо, я получаю 3 отладочных сообщения в Logcat (информацию или что-то посмотреть?).
D/InputEventConsistencyVerifier(24700): TouchEvent: ACTION_MOVE contained 1 pointers
but there are currently 0 pointers down.
D/InputEventConsistencyVerifier(24700): in [email protected]
D/InputEventConsistencyVerifier(23596): 0: sent at 37751425150760,
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=39.00721, y[0]=28.526703, toolType[0]=TOOL_TYPE_FINGER,
buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=37751425,
downTime=37751133, deviceId=0, source=0x1002 }
Есть также 4 отладочные сообщения от OnTouchListener -
Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION UP
Что соответствует движению красть, я считаю.
Основной класс активности простирается OnGestureListener
, следовательно, имеет свои невыполненные методы, такие как onFling .. и т.д. и т.п.
Проблема заключается в том, что метод onFling вызывается только после того, как ACTION UP
события, и когда это происходит аргумент, передаваемый методу mevt1 имеет значение null, а значение mevt2 не равно нулю. (Поведение по умолчанию?)
onFling (MotionEvent mevt1, MotionEvent mevt2, плавать velX, плавать Vely)
Метод использует mevt1 и, следовательно, это приводит к nullpointexception.
Я хочу знать, вызывает ли отладочные сообщения от InputEventConsistencyVerifier
, и если кто-нибудь знает, если это вообще проблема?
К сожалению, ранее код я вставил был из моего сеанса отладки. Новый код обновлен. Мое приложение падает, когда я запускаю этот код. Я обнаружил, что если я тоже использовал onScroll(), результат будет таким же. i.e Сбой приложений. – sangameshk
Почему вы всегда возвращаете истину? значение возвращаемого детектора – pskink
Я не знаю, как, но я написал некоторые коды событий касания с нуля, перейдя к основам, и я больше не получаю ошибку, и все работает. Я считаю, что ошибка может быть вызвана неправильной обработкой событий касания в родительском представлении или дочернем (контекст Listview). – sangameshk