2012-10-21 3 views
1

geopoints를 업데이트하기 위해 MapView에서 onTouchEvent를 구현하려고하지만 화면을 터치 할 때 ACTION_UP 만 잡으면 3 번 실행됩니다. 이 조건에서 내 코드를 한 번 실행하는 방법?Android OnTouchEvent가 3 번 발생합니다.

@Override 
public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
    int action = event.getAction(); 
    if (action == MotionEvent.ACTION_UP) { 
     Log.e("Touch", Integer.toString(event.getAction())); 
     //All 3 fires has index 1 that concern to ACTION_UP 
     //Below will be AsyncTask call 
    } 
    return false; 
} 

답변

2

메서드 서명에서 사용자의 예제는 덮어 쓰기 된 Overlay에서 가져온 것입니까? 탭이 오버레이로 처리 된 경우 사실 :

반환 : 그렇다면, 그것은 documentation 상태입니다.

이것은 거의 모든 이벤트 (onTouch, onKey 등)에 대한 표준 안드로이드 동작입니다. 이벤트가 처리 된 경우 (귀하의 AsyncTask를 시작한 경우) true을 반환해야 Android가 처리되었음을 알 수 있습니다.

항상 false을 반환하므로 프레임 워크는 처리되었는지 여부를 알지 못하며 Action을 이벤트 처리 체인 아래로 전달합니다. 정확히 3 번 왜 그런지 모르겠습니다.

이벤트를 성공적으로 처리 한 경우 true을 반환하십시오.

+0

감사합니다. – user1376885

관련 문제