안드로이드 개발 질문/답변
(글 수 45,052)
현재 핸들러 안에 AlertDialog가 있습니다.
기존에 AlertDialog를
new AlertDialog.Builder(activityname.this); 와 같이 생성하였는데요,
문제는 이 Dialog 생성부분이 핸들러 안에 포함되어 있었습니다.
그래서 나중에 생성시에 BadTokenException이 나오길래
new AlertDialog.Builder(GetParent());
로 수정을 하였습니다.
그랬더니 이번엔 NullPointerException이 나오네요!!
아래는 코드입니다.
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case Common.FAILED_CONNECT:
AlertDialog alert = new AlertDialog.Builder(getParent()).
setTitle("Connection Failed").
setMessage("Connect to another device.\nRetry?")
.show();
break;
}
}
}




왜 getParent를 사용한지는 모르겠지만.. isChild로 부모객체가 있는지 확인해보세요..
그리고 지금 저 메서드가 사용되고 있는 부분이 getParent를 사용한걸 봐선 Activity인데요
AlertDialog.Builder의 매개변수가 Context 타입이므로 해당Activity이름.this 로 하셔야 합니다.
무기명 핸들러이기 때문에 이너클래스와 마찬가지로 스코프 안쪽은 또 다른클래스의 영역과 같기 때문에 위와같이 하는겁니다.
getApplicationContext()에 대해서도 자세히 알아보셔도 좋겠네요..