指定的孩子已经有父母

Kan*_*dha 7 android android-alertdialog

我创建了AlertDialog使用构建器.它显示我们何时调用该show()方法.我在该对话框中有取消按钮.我可以通过单击取消按钮取消该对话框.我的问题是,一旦我取消显示对话框,我就无法再次显示对话框.它会抛出一个例外:

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)
Run Code Online (Sandbox Code Playgroud)

Kon*_*rov 17

不要显示相同的对话框,创建一个新对话框.

这种情况正在发生,因为您正在尝试重新使用已创建的对话框(可能在onCreate)并使用一次.重用对话框没有问题,但在问题中,指定的子对象(视图)已经有父对象(对话框).您可以继续删除父对象,也可以创建一个新的父对象: -

alertDialog=new AlertDialog(Context);
alertDialog.setView(yourView);
alertDialog.show();
Run Code Online (Sandbox Code Playgroud)

  • 这应该是评论!! (7认同)