首頁 >Java >java教程 >如何修復 Android 中的「指定子項已經有父級」錯誤?

如何修復 Android 中的「指定子項已經有父級」錯誤?

DDD
DDD原創
2024-10-31 21:20:02950瀏覽

How to Fix the

Android:解決「指定的子級已經有父級」錯誤

嘗試重複切換版面錯誤提示, 「指定的子項已經有父項。您必須先在子項的父項上呼叫removeView()。」當您嘗試將視圖新增至版面配置而不先將其從其先前的父級中刪除時,就會出現這種情況。

錯誤觸發器

該錯誤通常發生在佈局之間切換時,包含相同的視圖。例如,您可能在兩種佈局中都有一個 TextView (tv)。當您切換到第二個佈局時,如果您嘗試再次向其中添加電視而不將其從第一個佈局中刪除,則會出現錯誤。

佈局代碼

您的佈局問題中提供的程式碼嘗試將tv 新增至LinearLayout:

<code class="java">// TEXTVIEW
layout.addView(tv);</code>

但是,在後續運行期間,tv 已經有一個父級(上一個佈局中的LinearLayout),導致錯誤。

要解決此問題,您需要先將 tv 從其上一個父級中刪除,然後再將其新增至新父級。這可以透過以下方式實現:

<code class="java">// TEXTVIEW
if (tv.getParent() != null) {
    ((ViewGroup) tv.getParent()).removeView(tv); // <- fix
}
layout.addView(tv);</code>

此程式碼檢查 tv 是否已有父級,如果有,則在將其新增至目前 LinearLayout 之前將其從該父級中刪除。

以上是如何修復 Android 中的「指定子項已經有父級」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn