2013-04-25 5 views
0

OnTouchEvent()의 제스처 리스너로 구성된 레이아웃이 있습니다. 레이아웃에는 listview가 포함되어 있으며 제스처를 사용하여 listview의 행 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 개의 디버그 메시지가 표시됩니다. (정보 또는 볼 대상이 무엇입니까 ??). 내가 믿는 슬쩍 운동에 해당

Action was ACTION MOVE 
Action was ACTION MOVE 
Action was ACTION MOVE 
Action was ACTION UP 

-

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 디버그 메시지가 있습니다. 주요 활동 클래스 따라서 OnGestureListener 연장

같은 기타 등 onFling .. 등의 비 구현 방법이있다

문제는 onFling 방법 후에야 ACTION UP 이벤트라고되어 있으며 그 방법으로 전달되는 인수 발생시 mevt2가 null이 아닌 동안 mevt1은 null입니다. (기본 동작?)

onFling은 (MotionEvent mevt1, MotionEvent mevt2, velY 플로트, 플로트 velX)

있어서 mevt1을 사용하고, 따라서이 nullpointexception시킨다.

InputEventConsistencyVerifier의 디버그 메시지가 문제가되는지 알고 싶습니다. 만약 누군가 이것이 어떤 문제인지 전혀 안다면?

답변

0

당신이 모든 행동에 대한

detector.onTouchEvent(evt) 

, 죄송합니다 그냥 ACTION_MOVE

+0

전화를해야, 내가 붙여 이전 코드는 내 디버그 세션에서였다. 새 코드가 업데이트되었습니다. 이 코드를 실행하면 내 앱이 중단됩니다. 나는 onScroll()도 사용하면 결과가 같음을 발견했다. 즉 App Crashes. – sangameshk

+0

왜 그렇게 항상 당신은 사실을 반환합니까? return detector의 가치 – pskink

+0

나는 어떻게해야할지 모르지만 터치 이벤트 코드를 처음부터 썼다면 더 이상 오류가 발생하지 않고 모든 것이 작동합니다. 부모보기 또는 자식 (Listview 컨텍스트) 터치 이벤트의 부적절한 처리로 인해 오류가 발생할 수 있습니다 믿습니다. – sangameshk