Android: 「指定された子にはすでに親がいます」エラーへの対処
レイアウトを繰り返し切り替えようとすると、次のようなエラーが発生する場合があります。 , 「指定された子にはすでに親があります。最初に子の親に対してremoveView()を呼び出す必要があります。」これは、ビューを以前の親から削除せずにレイアウトに追加しようとすると発生します。
エラー トリガー
エラーは通常、レイアウト間で切り替えるときに発生します。同じビューが含まれています。たとえば、両方のレイアウトに TextView (tv) があるとします。 2 番目のレイアウトに切り替えるときに、最初のレイアウトからテレビを削除せずに再度テレビを追加しようとすると、エラーが表示されます。
レイアウト コード
あなたのレイアウト質問に記載されているコードは、TV を LinearLayout:
<code class="java">// TEXTVIEW layout.addView(tv);</code>
に追加しようとします。ただし、その後の実行中に、TV にはすでに親 (前のレイアウトの LinearLayout) があり、エラーが発生します。
解決策
この問題を解決するには、テレビを新しい親に追加する前に、以前の親からテレビを削除する必要があります。これは、次の方法で実現できます。
<code class="java">// TEXTVIEW if (tv.getParent() != null) { ((ViewGroup) tv.getParent()).removeView(tv); // <- fix } layout.addView(tv);</code>
このコードは、tv にすでに親があるかどうかを確認し、親がある場合は、現在の LinearLayout に追加する前にその親から削除します。
以上がAndroid で「指定された子にはすでに親がいます」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。