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

모든 Touch를 감지하는 방법이 있을까요?

0 추천
질문 그대로 모든 터치를 감지해서 처리해야되는데

현재 액티비티에 Fragment 여러개가 있고 Fragment가 교체되는 형식입니다

MainActivity - Fragment 다수

 

어떤 버튼을 누르면

MainActivity에서 Relative 지정해놓은 View가 하나 뜹니다(약간 더보기 메뉴같은..)

그 후에 다른 공간을 눌렀을때 이 View를 INVISIBLE 시켜야 되서

 

MainActivity에서 OnTouchEvent를 오버라이드 해서 처리하면

될 것 같았는데. 예상과는 다르게 OnTouchEvent에 들어오질 않습니다(로그)

다른 프레그먼트 영역 화면을 눌렀을때 Activity는 아래 깔려있고 그 위에

Fragment가 있어서 감지를 못하는건지 잘 모르겠습니다.

Fragment 교체되는 영역에(메인 xml에 잡혀있는 Layout)도 클릭리스너 달아서 해봤는데

감지가 안됩니다

 

일일이 Fragment에 있는 Layout마다 클릭리스너 달아서 처리하면 될 것 같긴한데

Fragment가 수십개가 될 가능성이 있다보니 비효율적일것 같은데

 

다른 방법이 있는지 궁금합니다
익명사용자 님이 2016년 10월 14일 질문

1개의 답변

0 추천
우리에게는 static 과 상속이라는 개념이 있죠
aucd29 (218,390 포인트) 님이 2016년 10월 14일 답변
답변 감사합니다

메인에서 Fragment 교체하는 layout을 static로 잡고
layout.setOnClick 또는
layout.setOnTouch로 해보고 있는데
이런식의 접근 하는것이 아닌가요?

setOnTouch를 implement 해서 해봐도
안되는데 어떤식으로 접근해야 할지 모르겠습니다 ㅠㅠ
일단 무슨 목적으로 사용하시려는건지요?
mainactivity에 상단탭과 Fragment 영역이 있습니다.(+더보기 상세메뉴INVISIBLE)

상단탭에서 더보기탭을 누르면 그 아래에 더보기 상세메뉴가 뜹니다(Visible)

더보기탭을 누를때마다 더보기 상세메뉴가 visible/invisible 되는데

상세메뉴가 떠있을때 다른 Fragment 영역을 누르면 invisible 시켜야되는데
invisible을 시키려면 터치시킬때 그 시점을 잡아야되는데..
Fragment마다 클릭리스너 달아서 확인해도 되지만 이게 너무 비효율적이라서

Fragment 상관없이 Main에서 한번에 콜백 받을수 방법이 있는지 궁금합니다 ㅠ

친절하게 답변 달아주셔서 감사합니다
설명이 조금 이해하기 힘드네요
tab 이 있고 더보기 탭을 선택하면 2차 tab 이 나오는 것 이고 이때 Fragment 를 선택 하면
2차 tab 이 hide 되어야 한다는 것 으로 파악하면 되나요 ?

그리고 2차 tab 은 main activity 내에 존재 하기 때문에 Fragment 에서 MainActivity 로 이벤트를 전달해야 된다 ? 이건가요
...