2013-08-21 1 views
1

ListView 항목을 길게 누르면 세 개의 버튼이있는 AlertDialog가 열립니다. 그 중 하나는AlertDialog가 두 번째로 열릴 때 응용 프로그램이 충돌합니다.

longClickAlert.setNegativeButton("Rename", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        renameAlert.setMessage("New name:"); 
        renameAlert.setView(input); 
        renameAlert.setPositiveButton("Enter", new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          renameLine(externalStoragePath + "/Android/data/com.whizzappseasyvoicenotepad/recorded files.txt", recordedFilesArray.get(toDelete), input.getText().toString()); 
          currentFilePath = externalStoragePath + File.separator + "/Android/data/com.whizzappseasyvoicenotepad/" + recordedFilesArray.get(toDelete) + ".mp3"; 
          renameFile(input.getText().toString()); 
          recordedFilesArray.set(toDelete, input.getText().toString()); 
          listAdapter.notifyDataSetChanged(); 
          dialog.dismiss(); 
         } 
        }); 
        renameAlert.show(); 
        dialog.dismiss(); 
       } 
      }); 

이 잘 작동이 항목의 이름과 다른 모든 성공적으로 변경되는 항목 등의 이름을 변경하려면 "이름 바꾸기"이지만, 한 번만 사용할 수 있습니다. 내가 파일의 이름을 변경 한 후, 다시 응용 프로그램 충돌을 어떤 이름을 변경하려고이이 로그 캣 파일 인 경우 :

08-21 11:26:13.631: E/AndroidRuntime(7260): FATAL EXCEPTION: main 
08-21 11:26:13.631: E/AndroidRuntime(7260): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.view.ViewGroup.addViewInner(ViewGroup.java:3506) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.view.ViewGroup.addView(ViewGroup.java:3377) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.view.ViewGroup.addView(ViewGroup.java:3353) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at com.android.internal.app.AlertController.setupView(AlertController.java:413) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at com.android.internal.app.AlertController.installContent(AlertController.java:241) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.app.AlertDialog.onCreate(AlertDialog.java:337) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.app.Dialog.dispatchOnCreate(Dialog.java:355) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.app.Dialog.show(Dialog.java:260) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.app.AlertDialog$Builder.show(AlertDialog.java:951) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at com.whizzappseasyvoicenotepad.RecordedLibrary$3$2.onClick(RecordedLibrary.java:158) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.os.Looper.loop(Looper.java:137) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at java.lang.reflect.Method.invoke(Method.java:525) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
08-21 11:26:13.631: E/AndroidRuntime(7260):  at dalvik.system.NativeStart.main(Native Method) 
+0

'renameAlert.setView (input);에 입력되는 내용은 무엇입니까? –

+0

'renameAlert'를'닫으셨습니까? ' – user2652394

+0

더 많은 코드가 필요합니다 .. setView (입력)에서 '입력'을 이해하십시오 –

답변

0

사용자 Cruceo 나에게 코멘트에 대답을했다. 문제는 onCreate에 새로운 AlertDialog.Builder를 선언했기 때문에 처음 활동이 시작될 때만 만들어졌습니다. 방금 이동 했으므로 버튼을 클릭 할 때마다 선언되도록 클릭 방식으로

renameAlert = new AlertDialog.Builder(mContext); 

클릭하십시오.

Cruceo : 자신의 답변을 올리면 내가 받아 들일 것입니다. 고맙습니다!