Fehler: Das angegebene Kind hat bereits ein Elternteil (Android)
Problem:
Häufiges Wechseln zwischen zwei Layouts führt zu folgendem Fehler:
FATAL EXCEPTION: main java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Code-Snippet:
<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>
Lösung:
Die Fehlermeldung schlägt vor, das untergeordnete Element (TextView) aus seinem aktuellen übergeordneten Element zu entfernen, bevor es dem neuen Layout hinzugefügt wird.
Fügen Sie den folgenden Code vor layout.addView(tv); hinzu:
<code class="java">if (tv.getParent() != null) { ((ViewGroup) tv.getParent()).removeView(tv); // Fix }</code>
Dadurch wird sichergestellt, dass die TextView ordnungsgemäß von allen vorhandenen übergeordneten Elementen entfernt wird, bevor sie dem neuen Layout hinzugefügt wird, wodurch der angegebene übergeordnete Konflikt verhindert wird.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Android die Fehlermeldung „Das angegebene Kind hat bereits ein Elternteil“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!