Rumah > Java > javaTutorial > Mengapa Saya Mendapat Ralat \'Anak Yang Ditentukan Sudah Mempunyai Ibu Bapa\' dalam Android?

Mengapa Saya Mendapat Ralat \'Anak Yang Ditentukan Sudah Mempunyai Ibu Bapa\' dalam Android?

DDD
Lepaskan: 2024-10-30 13:22:02
asal
632 orang telah melayarinya

Why Am I Getting the

Menyelesaikan Masalah Ralat Android: "Anak Yang Ditentukan Sudah Mempunyai Ibu Bapa"

Apabila kerap bertukar antara reka letak, anda mungkin menghadapi ralat "The anak yang ditentukan sudah mempunyai ibu bapa Anda mesti memanggil removeView() pada ibu bapa kanak-kanak itu terlebih dahulu (Android). Ini berlaku apabila paparan, seperti TextView atau EditText, ditambahkan pada reka letak yang telah dilampirkan pada paparan kandungan aplikasi.

Sebagai contoh, pertimbangkan kod berikut di mana reka letak dibuat dan ditukar dengan kerap :

<code class="java">private void ConsoleWindow() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // Create a new layout (LinearLayout).
            LinearLayout layout = new LinearLayout(getApplicationContext());
            layout.setOrientation(LinearLayout.VERTICAL);

            // Add a TextView to the layout.
            layout.addView(tv);

            // Add an EditText to the layout.
            et.setHint("Enter Command");
            layout.addView(et);

            // Set the content view to the new layout.
            setContentView(layout);
        }
    });
}</code>
Salin selepas log masuk

Masalah timbul apabila kaedah setContentView() dipanggil dua kali dengan reka letak yang berbeza. Kali pertama, tiada isu kerana susun atur LinearLayout ditambahkan pada paparan kandungan buat kali pertama. Walau bagaimanapun, semasa panggilan berikutnya ke setContentView(), susun atur LinearLayout masih mengandungi anak-anaknya (TextView dan EditText). Memandangkan objek LinearLayout sudah mempunyai induk (pandangan kandungan), menambahkannya sekali lagi akan menimbulkan ralat "Anak yang ditentukan sudah mempunyai ibu bapa".

Penyelesaian:

Penyelesaiannya adalah untuk mengalih keluar kanak-kanak (TextView dan EditText) daripada susun atur LinearLayout sebelum menambahkannya pada paparan kandungan untuk kali kedua. Berikut ialah kod yang diubah suai:

<code class="java">private void ConsoleWindow() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // Create a new layout (LinearLayout).
            LinearLayout layout = new LinearLayout(getApplicationContext());
            layout.setOrientation(LinearLayout.VERTICAL);

            // Remove the TextView from its parent (if it has one).
            if (tv.getParent() != null) {
                ((ViewGroup) tv.getParent()).removeView(tv);
            }
            
            // Add the TextView to the layout.
            layout.addView(tv);

            // Remove the EditText from its parent (if it has one).
            if (et.getParent() != null) {
                ((ViewGroup) et.getParent()).removeView(et);
            }
            
            // Add the EditText to the layout.
            et.setHint("Enter Command");
            layout.addView(et);

            // Set the content view to the new layout.
            setContentView(layout);
        }
    });
}</code>
Salin selepas log masuk

Dengan mengalih keluar kanak-kanak daripada ibu bapa terdahulu mereka sebelum menambahkan mereka pada susun atur LinearLayout baharu, anda memastikan bahawa mereka tidak dilampirkan pada berbilang ibu bapa secara serentak, menyelesaikan "Anak yang ditentukan sudah mempunyai ralat ibu bapa".

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan