내가 XML 이런 식으로 뭔가를 포함하는 조각을 가지고를 제거합니다. 부모 조각은 다음과 같이 시작합니다.는 모든 자식의 파편
getFragmentManager().beginTransaction()
.replace(R.id.frameContainer, myFragment1)
.addToBackStack(null)
.commit();
이렇게 조각이 1 번 이상 표시 될 때까지 모든 작업이 정상적으로 작동합니다. 나는 다시 클릭 한 다음 나는이 잘못을 받고 있어요, 다시 조각을 열려고하는 경우 :
Caused by: java.lang.IllegalArgumentException: Binary XML file line #17: Duplicate id 0x7f080130, tag null, or parent id 0xffffffff with another fragment for com...widgets.myViewPager
을 나는이 문제를 알고도 해결책을 가지고 있습니다. 나는 onDestroy에서 단편을 제거 할 수있었습니다. 그러나, 나는 이것을하고 싶지 않다! 다른 조각을 포함하는 xml은 동적입니다. 번들을 통해 레이아웃을 얻고 있습니다. 따라서이 부분에서는 어떤 조각이 표시되는지 알 수 없습니다. 그리고이 부분을 한 번 이상 사용하면 이름이 동일하다는 것을 확실하게해야합니다. 그래서 내 질문은 : 각 조각에서 제거 할 수있는 가능성이 있습니까? 그래서 모든 조각이 자신을 제거하고 부모는 할 일이 없습니까? 도움을
감사
편집 :
MyFragment myFragment1 = new MyFragment();
Bundle bundle = new Bundle();
bundle.putInt("layout",R.layout.my_fragment);
myFragment1.setArguments(bundle);
getFragmentManager().beginTransaction()
.replace(R.id.frameContainer, myFragment1)
.addToBackStack(null)
.commit();
내가 다른 곳에서하고있어이 호출. 각 호출에 대해 다른 조각으로 XML을 만들 수 있습니까? 부모님 조각에 나는이 일을 해요 그리고 :
int layoutId = this.getArguments().getInt("layout", 0);
if(layoutId==0)
throw new RuntimeException("LayoutId not found");
return inflater.inflate(layoutId,container,false);
을 그 일을 한 후, 내 조각 나는 XML에 설정된 모든 조각과 XML을로드합니다. 그래서 외부에서 뷰를 정의 할 수 있습니다. 이 조각에서 파기하고 다시 열면 오류가 발생합니다. 이것은 내 XML의 모든 조각이 파괴되지 않았기 때문입니다! 부모님이 모르는 부분은 xml에있는 파편이 무엇인지 모르기 때문에 수업에서 자신을 파괴하고 싶습니다.
여기까지 도달 했습니까? –