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

Fragment에서 일반 클래스 호출 후, context 처리

0 추천
안녕하세요.

현재 ViewPager에서 버튼을 누르면 블루투스 연결해 데이터를 주고받는 앱을 만들고 있습니다.

그런데 다른 데이터가 DB에 들어있을 떄, 데이터를 유지 할지 덮어씌울지 Alert로 물어보게 되어있습니다.

이러한 작업들이 ViewPager 위의 Fragment에서 BluetoothController 클래스를 타고 타고

데이터를 주고 받다가 물어보게 되는데

이 때, Alert에서 Context 에러가 납니다. (이 클래스는 상속이 없는 일반 클래스)

Alert를 실행하는 클래스에 MainActivity에서 this를 전달도 해보고 Fragment에서 getContext를 넘겨도보고

App이라는 Application을 상속받는 클래스를 만들어 getContext도 해보고

여러가지 방법을 해봤는데 에러가 발생합니다.

 

제가 이해하고 있는 Context는 현재 작업 중인 화면 또는 동작의 주인과 같은 것이라고 알고있습니다.

그래서 제 생각에는 ViewPager는 메인 화면 위에 Fragment를 올리는 것이기 때문에

베이스에 항상 메인이 있어 MainActivity의 this를 넘겨주면 될 것 같았는데 잘못 이해한 것인가요?

제가 잘못 이해하고 있는 것이라면 Context를 어떻게 이해해야하며

이 Context 에러를 어떻게 해결해야 할까요??
yt0229 (1,070 포인트) 님이 2019년 4월 15일 질문

2개의 답변

0 추천
정확한건 로그를 확인 해 봐야 하겠지만,Context를 제대로 넘기셨다면,  

허용 안 된 Thread에서 팝업을 띄우려고 시도 해서 오류가 났을 가능성이 제일 높을 듯 합니다.

Handler 같은 것으로 이벤트만 날리고 Handler Thread에서 팝업을 띄우게 변경 해 보세요.
익명사용자 님이 2019년 4월 15일 답변
MainActivity에서 getContext 해서 넘겨받지 않고, MainActivity에 context를 static으로 선언 후 사용하니깐 에러는 안나는데 Alert문에서 멈춰있지 않고 계속 진행이 됩니다. 그리고 작업 완료 후 뜨는 Alert 밑에 띄워져 있던데 이건 context가 달라서 나타나는 현상인가요?? 혼란스럽네요...
0 추천
플래그먼트에서 일반 클래스 호출시 getactivity로 넘길수 있을텐데 어던 방법으로 넘기셨는지 .
산적 (1,360 포인트) 님이 2019년 4월 15일 답변
네 위에서 언급했듯이 메인에서, 프래그먼트에서 넘겨 받는거 다 해봐도 안되네요 ㅎㅎ 일반적으로 getContext(Context context){} 해서 받았습니다.
...