android – FragmentManager添加相同Fragment类型的多个实例

android – FragmentManager添加相同Fragment类型的多个实例,第1张

概述我需要将一个片段“堆叠”在另一个之上.我是这样做的: String className = fragment.getClass().getName(); FragmentManager fragmentManager = getChildFragmentManager(); FragmentTransaction fragmentTransaction = fragmentMa 我需要将一个片段“堆叠”在另一个之上.我是这样做的:

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类型的多个实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125415.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存