2013-08-21 143 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(); 
       } 
      }); 

这工作得很好,项目名称和其他一切变更成功,但它只能使用一次。当我重命名文件,然后尝试再次重命名任何东西,应用程序崩溃,这是logcat的文件:

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:如果你发布自己的答案,我会接受你的。谢谢!

相关问题