我有一個配置爲OnTouchEvent()
的手勢監聽器的佈局。該佈局包含一個列表視圖,我正在使用手勢來捕獲列表視圖的行ID。 我有以下代碼 -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實例。我基本上只使用向左滑動或在列表視圖的一行上滑動右側操作。
每當我向左/向右滑動我在Logcat中收到3條調試消息 (信息或要看的東西??)。
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 }
也有從OnTouchListener 4個調試消息 -
Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION UP
對應於刷卡運動,我相信。
主要活動類擴展OnGestureListener
因此具有其未實現的方法如onFling ..等等等等
的問題是,該onFling方法被調用後,才ACTION UP
事件,並且當發生傳遞給方法的參數mevt1爲null,而mevt2不爲null。 (默認行爲?)
onFling(MotionEvent mevt1,MotionEvent mevt2,浮velX,浮法velY)
該方法使用mevt1,因此這將導致nullpointexception。
我想知道InputEventConsistencyVerifier
的調試信息是否有問題,如果有人知道這是否有問題?
對不起,前面的代碼我粘貼是從我的調試會話。新代碼已更新。我運行此代碼時,我的應用程序崩潰。我發現如果我也使用onScroll(),結果是一樣的。即應用程序崩潰。 – sangameshk 2013-04-25 10:17:44
爲什麼你總是迴歸真實?返回探測器的值 – pskink 2013-04-25 10:50:21
我不知道如何,但我寫了一些觸摸事件代碼從頭開始到基礎知識,我不再得到錯誤,一切正常。我相信這個錯誤可能是由於父視圖或子視圖中觸摸事件的處理不當(Listview上下文)造成的。 – sangameshk 2013-04-27 11:42:10