Erreur : l'enfant spécifié a déjà un parent (Android)
Problème :
Le fait de basculer fréquemment entre deux mises en page entraîne l'erreur suivante :
FATAL EXCEPTION: main java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Extrait de code :
<code class="java">tv = new TextView(getApplicationContext()); // initialized elsewhere et = new EditText(getApplicationContext()); // initialized elsewhere private void ConsoleWindow() { runOnUiThread(new Runnable() { @Override public void run() { // MY LAYOUT: setContentView(R.layout.activity_console); // LINEAR LAYOUT LinearLayout layout = new LinearLayout(getApplicationContext()); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); // TEXTVIEW layout.addView(tv); // ERROR IN THIS LINE DURING 2ND RUN // EDITTEXT et.setHint("Enter Command"); layout.addView(et); } }); }</code>
Solution :
Le message d'erreur suggère de supprimer l'enfant (TextView) de son parent actuel avant de l'ajouter à la nouvelle mise en page.
Ajoutez le code suivant avant layout.addView(tv);:
<code class="java">if (tv.getParent() != null) { ((ViewGroup) tv.getParent()).removeView(tv); // Fix }</code>
Cela garantit que TextView est correctement supprimé de tout parent existant avant d'être ajouté à la nouvelle mise en page, évitant ainsi le conflit parent spécifié.
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!