>  기사  >  Java  >  Android에서 \"지정된 하위 항목에 이미 상위 항목이 있습니다\" 오류가 발생하는 이유는 무엇입니까?

Android에서 \"지정된 하위 항목에 이미 상위 항목이 있습니다\" 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-30 13:51:27282검색

Why Am I Getting

오류: 지정된 하위에 이미 상위가 있음(Android)

문제:

두 레이아웃 사이를 자주 전환하면 다음 오류가 발생합니다.

FATAL EXCEPTION: main
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

코드 조각:

<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>

해결책:

오류 메시지에서는 새 레이아웃에 추가하기 전에 현재 상위에서 하위(TextView)를 제거하라고 제안합니다.

layout.addView(tv) 앞에 다음 코드를 추가하세요.:

<code class="java">if (tv.getParent() != null) {
    ((ViewGroup) tv.getParent()).removeView(tv); // Fix
}</code>

이렇게 하면 TextView가 새 레이아웃에 추가되기 전에 기존 상위에서 적절하게 제거되어 지정된 상위 충돌이 방지됩니다.

위 내용은 Android에서 \"지정된 하위 항목에 이미 상위 항목이 있습니다\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.