ホームページ >Java >&#&チュートリアル >Android アプリでレイアウトを切り替えると「指定された子にはすでに親があります」というメッセージが表示されるのはなぜですか?
レイアウトを頻繁に切り替えると、例外が発生する場合があります:「指定された子にはすでに親があります。removeView() を呼び出す必要があります。」 "
このエラーは、ビュー (この場合は TextView ("tv") がすでに親ビュー グループ (LinearLayout ") にアタッチされている場合に発生します
提供されたコード スニペットは、Android でのレイアウト切り替えメカニズムを示しています。最初に「ConsoleWindow()」メソッドが実行されると、レイアウトが設定され、問題なく「layout」に「tv」が追加されます。ただし、レイアウトを空のレイアウトに切り替えてから元のレイアウトに戻すと、エラーがスローされます。
エラー メッセージは、適切な解決策を提案します。ビューを削除するというものです。新しい親に追加する前に、現在の親を削除します。これを実現するには:
<code class="java">// TEXTVIEW if(tv.getParent() != null) { ((ViewGroup)tv.getParent()).removeView(tv); // <- fix } layout.addView(tv);</code>
このチェックにより、「tv」がすでに別の親ビュー グループにアタッチされている場合、新しいレイアウトに追加される前にまず削除されることが確認され、アタッチの問題が解決されます。
以上がAndroid アプリでレイアウトを切り替えると「指定された子にはすでに親があります」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。