Android 오류 문제 해결: "지정된 하위 항목에 이미 상위 항목이 있습니다"
레이아웃 간에 자주 전환할 때 "The 지정된 하위에 이미 상위가 있습니다. 먼저 하위의 상위(Android)에서 제거뷰()를 호출해야 합니다." 이는 애플리케이션의 콘텐츠 뷰에 이미 첨부된 레이아웃에 TextView 또는 EditText와 같은 뷰가 추가될 때 발생합니다.
예를 들어, 레이아웃이 자주 생성되고 전환되는 다음 코드를 고려해보세요. :
<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>
setContentView() 메서드를 다른 레이아웃으로 두 번 호출하면 문제가 발생합니다. 처음에는 LinearLayout 레이아웃이 콘텐츠 뷰에 처음으로 추가되므로 문제가 없습니다. 그러나 setContentView()에 대한 후속 호출 중에 LinearLayout 레이아웃에는 여전히 해당 하위 요소(TextView 및 EditText)가 포함됩니다. LinearLayout 객체에 이미 상위(콘텐츠 뷰)가 있으므로 이를 다시 추가하면 "지정된 하위에 이미 상위가 있습니다." 오류가 발생합니다.
해결책:
해결책은 콘텐츠 뷰에 두 번째로 추가하기 전에 LinearLayout 레이아웃에서 하위 항목(TextView 및 EditText)을 제거하는 것입니다. 수정된 코드는 다음과 같습니다.
<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>
새 LinearLayout 레이아웃에 추가하기 전에 이전 상위에서 하위를 제거하면 해당 하위가 여러 상위에 동시에 연결되지 않도록 하여 "지정된 하위가 이미 상위 항목이 있습니다.' 오류.
위 내용은 Android에서 \"지정된 하위 항목에 이미 상위 항목이 있습니다\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!