I created the AlertDialog
using the builder. It shows when we call the show()
method. I have the cancel button in that dialog. I can cancel that dialog by clicking the cancel button. My problem is once I cancelled displaying the dialog, I can't show the dialog again. It throws an exception like:
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): at android.view.ViewGroup.addViewInner(ViewGroup.java:1970)
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): at android.view.ViewGroup.addView(ViewGroup.java:1865)
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): at android.view.ViewGroup.addView(ViewGroup.java:1845)
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): at com.android.internal.app.AlertController.setupView(AlertController.java:364)
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): at com.android.internal.app.AlertController.installContent(AlertController.java:205)
09-09 12:25:06.441: ERROR/AndroidRuntime(2244): at android.app.AlertDialog.onCreate(AlertDialog.java:251)
This is happening because you are trying to re-use the dialog which was already created (Probably at onCreate
)and used once. There is no issue in reusing a dialog but as in the question the the specified child (the view) already has a parent (the dialog).You could either continue by removing the parent or you can create a new parent like :-
alertDialog=new AlertDialog(Context);
alertDialog.setView(yourView);
alertDialog.show();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With