더블탭을 위한 GestureDetector 메서드 구현 중에 발생한 오류이다.
private void initGestureDetector() {
gestureDetector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
ILog.iLogDebug(TAG, "ㅇㅁㅇ");
...
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
});
GestureDetector.OnDoubleTapListener listener = new GestureDetector.OnDoubleTapListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
ILog.iLogDebug(TAG, "더븤클릭");
...
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
};
gestureDetector.setOnDoubleTapListener(listener);
}
이렇게 입력하면 갑자기 생성자 오류가 발생하는데, 해결하고 보니 이유가 너무.. 허무했다.
이 리스너를 프래그먼트 위에 구현했는데, 프래그먼트에서 this는 fragment를 의미하기 때문에 컨텍스트 생성자가 없기 때문이었다 ㅠㅠ
따라서, this를 getContext()로 변경하면 된다.
반응형