두 레이아웃을 자주 전환해야합니다. 아래 게시 된 레이아웃에서 오류가 발생했습니다.
내 레이아웃을 처음 호출하면 오류가 발생하지 않으며 모든 것이 정상입니다. 그런 다음 다른 레이아웃 (공백 레이아웃)을 호출하고 나중에 내 레이아웃을 다시 호출하면 다음 오류가 발생합니다.
> FATAL EXCEPTION: main
> java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
내 레이아웃 코드는 다음과 같습니다.
tv = new TextView(getApplicationContext()); // are initialized somewhere else
et = new EditText(getApplicationContext()); // in the code
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);
}
}
}
나는이 질문이 전에 요청되었음을 알고 있지만 내 경우에는 도움이되지 않았습니다.
답변
오류 메시지에 수행 할 작업이 표시됩니다.
// TEXTVIEW
if(tv.getParent() != null) {
((ViewGroup)tv.getParent()).removeView(tv); // <- fix
}
layout.addView(tv); // <========== ERROR IN THIS LINE DURING 2ND RUN
// EDITTEXT
답변
attachtoroot 인수를 false로 전달하십시오.
View view = inflater.inflate(R.layout.child_layout_to_merge, parent_layout, false);
답변
내 recyclerview로 오류를 검색하기 위해 여기에 왔지만 솔루션이 작동하지 않았습니다 (분명히). recyclerview의 경우 원인과 해결책을 작성했습니다. 그것이 누군가를 돕기를 바랍니다.
onCreateViewHolder()
다음 방법을 따르는 경우 오류가 발생합니다 .
layoutInflater = LayoutInflater.from(context);
return new VH(layoutInflater.inflate(R.layout.single_row, parent));
대신에
return new VH(layoutInflater.inflate(R.layout.single_row, null));
답변
내가 가지고 이 메시지 과 같이, false 대신 true로 뿌리에 부착 사용하여 조각을 커밋하는 동안을 :
return inflater.inflate(R.layout.fragment_profile, container, true)
수행 한 후 :
return inflater.inflate(R.layout.fragment_profile, container, false)
효과가있었습니다.
답변
다른 솔루션이 다음과 같이 작동하지 않는 경우 :
View view = inflater.inflate(R.layout.child_layout_to_merge, parent_layout, false);
조각의 onCreateView에서 돌아 오는 것이 단일보기입니까 또는보기 그룹입니까? 내 경우에는 조각의 xml 루트에 viewpager가 있었고 레이아웃에 viewgroup을 추가 할 때 viewpager (view)가 아닌 viewgroup을 반환해야한다고 업데이트하지 않았습니다.
답변
frameLayout.addView (bannerAdView); <—–이 줄에 오류가 발생하면 다음과 같이하십시오.
if (bannerAdView.getParent() != null)
((ViewGroup) bannerAdView.getParent()).removeView(bannerAdView);
frameLayout.addView(bannerAdView); <------ now added view
답변
내 오류는 다음과 같이 뷰를 정의했습니다.
view = inflater.inflate(R.layout.qr_fragment, container);
누락되었습니다 :
view = inflater.inflate(R.layout.qr_fragment, container, false);