Android: Menangani Ralat "Anak Yang Ditentukan Sudah Ada Ibu Bapa"
Apabila cuba menukar antara reka letak berulang kali, anda mungkin menghadapi ralat menyatakan , "Anak yang ditentukan sudah mempunyai ibu bapa. Anda mesti memanggil removeView() pada ibu bapa kanak-kanak itu terlebih dahulu." Ini timbul apabila anda cuba menambah paparan pada reka letak tanpa mengalih keluarnya daripada induk sebelumnya.
Pencetus Ralat
Ralat biasanya berlaku apabila menukar antara reka letak yang mengandungi pandangan yang sama. Sebagai contoh, anda mungkin mempunyai TextView (tv) dalam kedua-dua susun atur. Apabila anda bertukar kepada reka letak kedua, ralat muncul apabila anda cuba menambah tv padanya semula tanpa mengalih keluarnya daripada reka letak pertama.
Kod Reka Letak
Reka letak anda kod, seperti yang diberikan dalam soalan, cuba menambah tv pada LinearLayout:
<code class="java">// TEXTVIEW layout.addView(tv);</code>
Walau bagaimanapun, semasa larian berikutnya, tv sudah mempunyai induk (LinearLayout daripada susun atur sebelumnya), yang membawa kepada ralat.
Penyelesaian
Untuk menyelesaikan isu ini, anda perlu mengalih keluar tv daripada induknya sebelum menambahkannya pada yang baharu. Ini boleh dicapai dengan:
<code class="java">// TEXTVIEW if (tv.getParent() != null) { ((ViewGroup) tv.getParent()).removeView(tv); // <- fix } layout.addView(tv);</code>
Kod ini menyemak sama ada tv sudah mempunyai induk, dan jika ada, ia mengalih keluarnya daripada induk itu sebelum menambahkannya pada LinearLayout semasa.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Anak Yang Ditentukan Sudah Mempunyai Ibu Bapa\' dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!