오류: 지정된 하위에 이미 상위가 있음(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!