마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

상속으로 인한 TouchListener GestureListener 중첩 질문입니다.

0 추천
제가 슬라이드 메뉴를 만들고 있는데요.

슬라이드 메뉴 Activity에 슬라이드 메뉴를 어느 화면에서든 열수 있도록

TouchListener등을 코딩해서 다른 Activity에서든 이 슬라이드 메뉴 액티비티만 상속받으면 가능하게 했습니다.

문제는,

 

슬라이드 메뉴 액티비티를 상속받은 액티비티 A가 있다고 가정했을 때,

A에서도 TouchListener로써 처리할 일들이 있어서 등록을 했습니다.

그러면 상속 받은 액티비티와 메인 액티비티의 둘다 터치 리스너가 중복이 되게 되죠.

그래서 슬라이드 메뉴 터치리스너는 제대로 잘 동작하지만,

메인 액티비티의 터치리스너는 도무지 터치이벤트를 잡질 못합니다.

 

어떻게 해결해야 합니까?
하임스 (680 포인트) 님이 2014년 1월 30일 질문

1개의 답변

0 추천
 
채택된 답변
dispatchTouchEvent 메소드를 사용해 보시는 것이 어떨까요? 이 메소드는 터치 이벤트를 다른 객체로 전달합니다.

여기를 참고해 보세요.

 

http://stackoverflow.com/questions/3278247/how-to-detect-touch-events-in-android
방귀과장 (18,940 포인트) 님이 2014년 1월 30일 답변
하임스님이 2014년 1월 30일 채택됨
저거는 하나의 클래스에서 객체간에 넘겨주는 건데,
class A extends B 가 있을 때,
B에서 발생한 Touch이벤트를 A로 어떻게 넘겨주나요?
B는 A말고도 여러 액티비티에 상속되어지는 상황이거든요.
왼쪽 끝에 스와핑해서 메뉴를 여는 것을 구현하려고 하시는 것 같군요.

Navigation drawer를 이용하시면 됩니다. 아래 링크 걸께요.

http://developer.android.com/training/implementing-navigation/nav-drawer.html
Dispatch 로 B에서 발생한 Touch를 getChild().onTouchEvent(event);
해서 넘겨주니까
A에서 Dispatch함수로 TouchEvent가 넘어오더라구요. 그래서 해결했네요 ㅋㅋ 감사합니다.
...