Maison >Java >javaDidacticiel >Pourquoi mon application Android lance-t-elle « L'enfant spécifié a déjà un parent » lors du changement de mise en page ?

Pourquoi mon application Android lance-t-elle « L'enfant spécifié a déjà un parent » lors du changement de mise en page ?

DDD
DDDoriginal
2024-10-29 22:26:30497parcourir

Why Does My Android App Throw

Erreur de pièce jointe de la vue enfant dans Android

Lors du basculement entre les mises en page頻繁, une exception peut survenir : "L'enfant spécifié a déjà un parent. Vous devez appeler RemoveView() sur le parent de l'enfant en premier."

Cause :

Cette erreur se produit lorsque la vue, dans ce cas une TextView ("tv"), est déjà attachée à un groupe de vues parent (LinearLayout " layout") lorsque vous tentez de l'ajouter à nouveau à la nouvelle mise en page.

Contexte :

L'extrait de code fourni illustre un mécanisme de changement de mise en page dans Android. Lorsque la méthode "ConsoleWindow()" est exécutée initialement, elle définit la mise en page et ajoute "tv" à la "mise en page" sans problème. Cependant, lorsque la mise en page passe à une mise en page vide, puis revient à la mise en page d'origine, l'erreur est générée.

Solution :

Le message d'erreur suggère la solution appropriée : supprimer la vue de son parent actuel avant de l'ajouter au nouveau parent. Pour ce faire :

<code class="java">// TEXTVIEW
if(tv.getParent() != null) {
    ((ViewGroup)tv.getParent()).removeView(tv); // <- fix
}
layout.addView(tv);</code>

Cette vérification garantit que si « tv » est déjà attaché à un autre groupe de vues parent, il est d'abord supprimé avant d'être ajouté à la nouvelle mise en page, résolvant ainsi le problème de pièce jointe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn