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

adapter안에서 dialog 호출 문제..

0 추천
안녕하세요. 어댑터 안에서 다이얼로그 호출 시 에러가 발생하여 질문드립니다.

에러 내용은 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 입니다.

소스는

            m_loadingDialog = new Dialog(mContext, R.style.custom_loading);
           
            ProgressBar pb = new ProgressBar(mContext);
            LayoutParams params = new LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
           
            m_loadingDialog.setContentView(pb, params);
            m_loadingDialog.setCancelable(false);
            m_loadingDialog.show();  // 여기서 error

어댑터 안에서 toast나 intent할 때 다 context로 설정하였는데, 다이얼로그만 유독 에러납니다.

방법 있을까요?? 감사합니다.
동그랑때앵 (320 포인트) 님이 2016년 5월 19일 질문

3개의 답변

0 추천
mContext가 ApplicationContext라면 안 될 수도 있습니다.
익명사용자 님이 2016년 5월 19일 답변
답변 감사합니다..

참고하겠습니다..
0 추천

  m_loadingDialog = new Dialog((Activity)mContext, R.style.custom_loading);

이렇게 썼던거 같은데 음... 한번 해보세요...

페어리 (12,270 포인트) 님이 2016년 5월 19일 답변
답변 감사합니다..

위와 같이 실행 시

java.lang.ClassCastException: android.app.Application cannot be cast to android.app.Activity

에러가 발생합니다..
0 추천
Contenxt를 넣을 때,   "액티비티명.this" 로 하세요.

Fragment라면 getActivity()
개발자초심 (21,220 포인트) 님이 2016년 5월 19일 답변
답변 감사합니다..

액티비티명.this로 하면

The constructor Dialog(액티비티명, int) is undefined

getActivity() 하면

The method getActivicy() is undefined for the type 액티비티명

이와 같이 뜹니다..
...