【问题标题】:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent firstjava.lang.IllegalStateException:指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()
【发布时间】:2011-09-26 09:15:41
【问题描述】:

这是我的代码:

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.

谁能帮我解决?以前它工作得很好,当我在另一个活动中使用它时问题就开始了。

我使用的是安卓 2.2。

【问题讨论】:

  • 我正在画布上画画,如果有帮助的话

标签: java android android-2.2-froyo


【解决方案1】:

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

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

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

你必须先从其他父母那里释放孩子。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 你能给我一个例子吗,有链接吗?如何正确地做到这一点?
    • @KISHORDATTAGUPTA 看起来 Frame.world.getScreen() 正在获取共享实例。您可能应该创建一个新实例。
    • 举例说明什么?你几乎没有给我们任何代码,没有任何目的。我刚刚向您解释了您收到异常的原因。
    • @emjam,感谢您的解释。但我在 android 中很新,所以我不明白我唯一的活动是如何共享的。
    • 您说您从另一个活动中检索了视图。与其检索视图,不如增加一个新视图。或者,也许您不需要第二个活动,应该坚持一个活动。一切都取决于您的任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2015-09-06
    • 2020-02-16
    • 2014-06-02
    相关资源
    最近更新 更多