java.lang.IllegalStateException: 指定的子视图已经有一个父视图。您必须先调用removeView()方法从其父视图中移除该子视图。

7
这是我的代码:
Frame.gameController.test();
setContentView(Frame.world.getScreen());
Frame.world.setRunning(true);

在第二行代码中,我遇到了以下错误:

ERROR/AndroidRuntime(15229): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

有人能帮我解决这个问题吗?之前它一直正常工作,问题出现在我将其放入另一个活动中。

我正在使用Android 2.2。


我正在画布上作画,如果有帮助的话。 - Kishor datta gupta
2个回答

11

可能您正在尝试从已经有父级的对象中设置内容。看起来您在一个活动中设置了一些视图,例如:

TextView tv = new TextView();
layout.adView(tv);
layout2.adView(tv);

当您尝试将电视添加到不同的布局中时,会出现该错误。在您的情况下,这是因为一个活动中的布局正在尝试被设置为另一个活动中的子级。

您必须先释放其他父级的子元素。


10

您不能在多个活动中使用同一视图。相反,您应该创建该视图的新实例。


1
你能给我一个例子或者链接吗?演示如何以正确的方式完成它? - Kishor datta gupta
1
@KISHORDATTAGUPTA 看起来Frame.world.getScreen()正在获取共享实例。您应该创建一个新的实例。 - ThomasW
一个例子?你几乎没有给我们任何代码和目的。我只是解释了你得到异常的原因。 - ernazm
@emjam,谢谢您的解释。但我在Android方面非常新手,所以我不明白我的唯一活动如何被共享。 - Kishor datta gupta
你说你从另一个活动中检索了视图。与其检索视图,最好是充气一个新的视图。或者,也许你不需要第二个活动,应该坚持使用单个活动。这完全取决于你的任务。 - ernazm
我有另一个活动,我没有调用它。在当前的活动中,我正在运行视图。如果我调用第一个活动,我会得到错误吗? - Kishor datta gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接