2013-04-25 94 views
0

我有一個配置爲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的調試信息是否有問題,如果有人知道這是否有問題?

回答

0

你必須調用

detector.onTouchEvent(evt) 

的每一個動作,不只是ACTION_MOVE

+0

對不起,前面的代碼我粘貼是從我的調試會話。新代碼已更新。我運行此代碼時,我的應用程序崩潰。我發現如果我也使用onScroll(),結果是一樣的。即應用程序崩潰。 – sangameshk 2013-04-25 10:17:44

+0

爲什麼你總是迴歸真實?返回探測器的值 – pskink 2013-04-25 10:50:21

+0

我不知道如何,但我寫了一些觸摸事件代碼從頭開始到基礎知識,我不再得到錯誤,一切正常。我相信這個錯誤可能是由於父視圖或子視圖中觸摸事件的處理不當(Listview上下文)造成的。 – sangameshk 2013-04-27 11:42:10