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
의 디버그 메시지가 문제가되는지 알고 싶습니다. 만약 누군가 이것이 어떤 문제인지 전혀 안다면?
전화를해야, 내가 붙여 이전 코드는 내 디버그 세션에서였다. 새 코드가 업데이트되었습니다. 이 코드를 실행하면 내 앱이 중단됩니다. 나는 onScroll()도 사용하면 결과가 같음을 발견했다. 즉 App Crashes. – sangameshk
왜 그렇게 항상 당신은 사실을 반환합니까? return detector의 가치 – pskink
나는 어떻게해야할지 모르지만 터치 이벤트 코드를 처음부터 썼다면 더 이상 오류가 발생하지 않고 모든 것이 작동합니다. 부모보기 또는 자식 (Listview 컨텍스트) 터치 이벤트의 부적절한 처리로 인해 오류가 발생할 수 있습니다 믿습니다. – sangameshk