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

AlertDialog 사용문의

0 추천
AlertDialog을 클릭하여 처음에 실행된 이후 다시 클릭을 하면 앱 에러가 뜹니다.

무엇이 문제인지 정확히 모르겠습니다.

 

버튼을 클릭하면 AlertDialog 뜹니다. 그리고 EditText의 값을 불러와서 넣고 수정하여 저장 및 취소를 합니다.

  inputalarm1.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
    AlertDialog.Builder builder = new AlertDialog.Builder(Register.this);
    builder.setTitle("Input Alarm1 Drugs");
    alarm1.setText(alarm1drug);
    builder.setView(alarm1);

    builder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
     
     @Override
     public void onClick(DialogInterface dialog, int which) {
      // TODO Auto-generated method stub
      Toast.makeText(Register.this, "Alarm1 Save : " +alarm1drug, Toast.LENGTH_SHORT).show();
     }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
     
     @Override
     public void onClick(DialogInterface dialog, int which) {
      // TODO Auto-generated method stub
        }
    });
    builder.setCancelable(false);
    builder.show();
   }
  });

 

 

 

AlertDialog를 누르고 저장이나 취소를 누르고 난 이후

다시 Dialog 버튼을 누르면  아래와 같은 오류가 발생합니다.

11-10 14:40:18.609: E/AndroidRuntime(1880): Process: healthall.company.smartpillbox_exhibition, PID: 1880
11-10 14:40:18.609: E/AndroidRuntime(1880): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.view.ViewGroup.addViewInner(ViewGroup.java:4654)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.view.ViewGroup.addView(ViewGroup.java:4490)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.view.ViewGroup.addView(ViewGroup.java:4462)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at com.android.internal.app.AlertController.setupCustomContent(AlertController.java:612)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at com.android.internal.app.AlertController.setupView(AlertController.java:521)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at com.android.internal.app.AlertController.installContent(AlertController.java:252)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.app.AlertDialog.onCreate(AlertDialog.java:423)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.app.Dialog.dispatchOnCreate(Dialog.java:578)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.app.Dialog.show(Dialog.java:314)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.app.AlertDialog$Builder.show(AlertDialog.java:1113)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at healthall.company.smartpillbox_exhibition.Register$3.onClick(Register.java:171)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.view.View.performClick(View.java:5702)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.view.View$PerformClick.run(View.java:22541)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.os.Handler.handleCallback(Handler.java:739)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.os.Handler.dispatchMessage(Handler.java:95)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.os.Looper.loop(Looper.java:158)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at android.app.ActivityThread.main(ActivityThread.java:7237)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at java.lang.reflect.Method.invoke(Native Method)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
11-10 14:40:18.609: E/AndroidRuntime(1880):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
쿠쿠부다스 (6,470 포인트) 님이 2016년 11월 10일 질문

1개의 답변

0 추천
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

alarm1을 재사용해서 오류가 나는 것 같군요.
익명사용자 님이 2016년 11월 10일 답변
alarm1 재사용시라면 어떤 말씀인지...
제 생각에는 버튼을 한번 사용하고 난뒤에
다시 한번 다 사용하여 view에 대해서 에러가 발생하는거같은데..
해결방법을 잘 모르겠습니다.
뷰를 제거해야하는 거같은데 어떻게 제거를 해야하는지 모르겠네요...ㅠㅠ
...