Ralat: Anak Yang Ditentukan Sudah Ada Ibu Bapa (Android)
Masalah:
Kerap bertukar antara dua reka letak mengakibatkan ralat berikut:
FATAL EXCEPTION: main java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Coretan Kod:
<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>
Penyelesaian:
Mesej ralat mencadangkan untuk mengalih keluar anak (TextView) daripada induk semasa sebelum menambahkannya pada reka letak baharu.
Tambah kod berikut sebelum susun atur.addView(tv);:
<code class="java">if (tv.getParent() != null) { ((ViewGroup) tv.getParent()).removeView(tv); // Fix }</code>
Ini memastikan TextView dialih keluar dengan betul daripada mana-mana induk sedia ada sebelum ditambahkan pada reka letak baharu, mengelakkan konflik induk yang ditentukan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Anak Yang Ditentukan Sudah Mempunyai Ibu Bapa\' dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!