布局之间切换时,可能会出现异常:“指定的子视图已有父视图,必须调用removeView()首先在子视图的父视图上。”
当视图(在本例中为 TextView(“tv”))已附加到父视图组(LinearLayout "布局”),当尝试将其再次添加到新布局时。
提供的代码片段演示了 Android 中的布局切换机制。当“ConsoleWindow()”方法最初执行时,它会设置布局并将“tv”添加到“layout”中,不会出现任何问题。然而,当布局切换到空白布局,然后又回到原来的布局时,就会抛出错误。
错误消息建议了适当的解决方案:从在将其添加到新父级之前,先将其当前父级添加到新父级中。要实现此目的:
<code class="java">// TEXTVIEW if(tv.getParent() != null) { ((ViewGroup)tv.getParent()).removeView(tv); // <- fix } layout.addView(tv);</code>
此检查可确保如果“tv”已附加到另一个父视图组,则在添加到新布局之前先将其删除,从而解决附件问题。
以上是为什么我的 Android 应用在切换布局时会抛出'指定的子项已经有父项”?的详细内容。更多信息请关注PHP中文网其他相关文章!