10-29 14:40:53.278: ERROR/AndroidRuntime(334): FATAL EXCEPTION: main
10-29 14:40:53.278: ERROR/AndroidRuntime(334): java.lang.IllegalArgumentException: no dialog with id 0 was ever shown via Activity#showDialog
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at android.app.Activity.missingDialog(Activity.java:2590)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at android.app.Activity.dismissDialog(Activity.java:2580)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at com.kangwon.kysfits.cardinate.Get_Cdn$1.onClick(Get_Cdn.java:229)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at android.os.Looper.loop(Looper.java:123)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at java.lang.reflect.Method.invokeNative(Native Method)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at java.lang.reflect.Method.invoke(Method.java:521)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-29 14:40:53.278: ERROR/AndroidRuntime(334): at dalvik.system.NativeStart.main(Native Method)
이런 오류가 뜨는데.. 무슨 오류인지 잘 모르겠어요.ㅠㅠ
꼭좀 답변 부탁드립니다!!ㅠㅠ
소스코드 첨부합니다!! 뭐가 잘못됬는지 모르겠어서요.ㅠㅠ
-----------------------------------------------------------------------------------------------------------------------------------------------
public Dialog onCreateDialog(int id)
{
Dialog dialog = null;
switch(id) {
//ID_2BUTTON_DIALOG로 정의된 0번 ID로 대화상자를 생성해야하는 경우
case ID_2BUTTON_DIALOG : {
//왼쪽,오른쪽 모두 클릭되서(cnt==2) 알림창이 떠야 하는 경우
if(cnt==2){
//AlertDialog 를 생성해주는 AlertDialog.Builder 객체를 생성한다.
new AlertDialog.Builder(this)
//대화상자의 제목을 설정한다.
.setTitle("알림")
//대화상자에 출력될 메세지 내용을 적는다.
.setMessage("선택하신 위치를 설정 하시겠습니까?")
//대화상자가 Back 버튼으로 닫히지 않도록 설정한다.
.setCancelable(false)
//좌측(Positive Button) 에 출력될 버튼을 설정한다.
//해당 버튼을 클릭했을 때 처리할 문장을 리스너로 구성해준다.
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Activity 에서 대화상자를 닫도록 메소드를 호출한다.
//Get_Cdn.this.dismissDialog(ID_2BUTTON_DIALOG); -> 참고로 이부분은 지워도, 넣어도 똑같은 오류가 생기더라구요.ㅠㅠ
//상의일 경우
if(toporbottom==true) {
//머리끝,발끝이 터치가 완료된 경우
if(cnt2==0){
//1px당 몇 cm 인지 계산해서 변수에 저장
cmperpx = Get_User_Info.user_height / (head_y - foot_y);
//cnt2값 1 증가
cnt2++;
}
//어깨 터치가 완료된 경우
else if(cnt2==1){
//어깨 너비 계산
shd_width = (shd_r_x - shd_l_x) * cmperpx;
//cnt2값 1 증가
cnt2++;
}
//가슴 터치가 완료된 경우
else if(cnt2==2){
//가슴 둘레 계산
chst_width = (chst_r_x - chst_l_x) * cmperpx;
//cnt2값 1 증가
cnt2++;
}
//양손목 터치가 완료된 경우
else if(cnt2==3){
//팔길이 계산
arm_leng = (float)(Math.sqrt(Math.pow(wrst_l_x - shd_l_x, 2)+Math.pow(wrst_l_y - shd_l_y, 2))) * cmperpx;
//cnt2값 1 증가
cnt2++;
}
//모두 터치가 완료된 경우
else if(cnt2==4){
AlertDialog.Builder bld = new AlertDialog.Builder(Get_Cdn.this);
bld.setTitle("알림");
bld.setMessage("좌표설정이 완료되었습니다. 피팅하시려면 피팅하기를 누르세요.");
bld.setPositiveButton("피팅하기", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int whichButton){
//피팅하기 버튼을 눌렀읕 경우 사이즈 계산된 결과가 뜸
Intent intent = new Intent();
intent.setClass(Get_Cdn.this, Show_Usr_Size.class);
startActivity(intent);
}
});
bld.setNegativeButton("취소", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int whichButton){
dialog.cancel();
//취소 버튼을 눌렀을 경우, '키 좌표'부터 다시 설정함
cnt2 = 0;
cnt = 0;
Intent intent = new Intent();
intent.setClass(Get_Cdn.this, Get_Cdn.class);
startActivity(intent);
}
});
bld.show();
}
} else { //하의일 경우
//머리끝,발끝이 터치가 완료된 경우
if(cnt2==0){
//1px당 몇 cm 인지 계산해서 변수에 저장
cmperpx = Get_User_Info.user_height / (head_y - foot_y);
//cnt2값 1 증가
cnt2++;
}
//골반 터치가 완료된 경우
else if(cnt2==1) {
//골반둘레 계산
plvs_width = (plvs_r_x - plvs_l_x) * cmperpx;
//cnt2값 1 증가
cnt2++;
}
//양발목 터치가 완료된 경우
else if(cnt2==2) {
//다리길이 계산
leg_leng = (float)(Math.sqrt(Math.pow(ankle_l_x - plvs_l_x, 2)+Math.pow(ankle_l_y - plvs_l_y, 2))) * cmperpx;
//cnt2값 1 증가
cnt2++;
}
//모두 터치가 완료된 경우
else if(cnt2==3){
AlertDialog.Builder bld = new AlertDialog.Builder(Get_Cdn.this);
bld.setTitle("알림");
bld.setMessage("좌표설정이 완료되었습니다. 피팅하시려면 피팅하기를 누르세요.");
bld.setPositiveButton("피팅하기", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int whichButton){
//피팅하기 버튼을 눌렀읕 경우 사이즈 계산된 결과가 뜸
Intent intent = new Intent();
intent.setClass(Get_Cdn.this, Show_Usr_Size.class);
startActivity(intent);
}
});
bld.setNegativeButton("취소", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int whichButton){
dialog.cancel();
//취소 버튼을 눌렀을 경우, '키 좌표'부터 다시 설정함
cnt2 = 0;
cnt = 0;
Intent intent = new Intent();
intent.setClass(Get_Cdn.this, Get_Cdn.class);
startActivity(intent);
}
});
bld.show();
}
}
//cnt 0으로 초기화
cnt = 0;
//좌표선택이 완료될때까지는 계속해서 좌표를 선택하는 이 클래스(Get_Cdn.class)가 뜨도록 함
if(cnt2 >= 0 && cnt2 <= 2) {
Intent intent = new Intent();
intent.setClass(Get_Cdn.this, Get_Cdn.class);
startActivity(intent);
}
}
})
// 우측(Negative Button) 에 출력될 버튼을 설정한다.
// 해당 버튼을 클릭했을 때 처리할 문장을 리스너로 구성해준다.
.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//취소 버튼을 클릭했을 경우, 해당 부위를 처음부터 다시 설정하도록 함(cnt=0)
cnt = 0;
//대화상자를 취소하여 닫는다.
dialog.cancel();
//그리고 다시 Get_Cnd.class로 이동
Intent intent = new Intent();
intent.setClass(Get_Cdn.this, Get_Cdn.class);
startActivity(intent);
}
})
.show();
}
break;
}
default :
dialog = null;
}
return dialog;
}




아 이거 어디서 많이 본거 같아는데.... 그.... 다이얼로그가 dismiss 안되서 생긴 오류같은데요?
http://stackoverflow.com/questions/5815089/android-illegalargumentexception-for-dismissdialog
참고하세요 ^^