
String classname = fragment.getClass().getname(); FragmentManager fragmentManager = getChildFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.ID.fragment_content,fragment,classname); fragmentTransaction.addToBackStack(classname); fragmentTransaction.commit();
内:
<FrameLayout androID:ID="@+ID/fragment_content" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="horizontal" />
只要碎片是不同类型的,这一切都很好.
但是,如果我创建了已经存在的片段类型的第二个实例,则会出现异常:
java.lang.IllegalStateException: Fragment already added: TestFragment{1184e8a1 #0 ID=0x7f0800ef com.test.ui.TestFragment} 如何添加同一片段的多个实例?
一个要求是它们都是彼此重叠的 – 因为它们中很少有一个小的边距,可以让你看到下面片段的一小部分.
谢谢您的帮助!
解决方法 父片段的布局<FrameLayout androID:ID="@+ID/fragment_contentrow" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" />
父片段中的代码以添加子片段
FragmentManager fm = getChildFragmentManager(); for (int x = 1; x < 5; x = x + 1) { FragmentTransaction ft = fm.beginTransaction(); ft.add(R.ID.fragment_contentrow,new MyChildFragment(),"Tag " + x); ft.addToBackStack(null); ft.commit(); } 总结 以上是内存溢出为你收集整理的android – FragmentManager添加相同Fragment类型的多个实例全部内容,希望文章能够帮你解决android – FragmentManager添加相同Fragment类型的多个实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)