是否可以使用FragmentTransaction和remove()方法去除layout.xml中定义的片段(使用片段标记)?
我没有使用支持库v4来实现这一点。在调用remove()之后,在提交FragmentTransaction之后片段保持不变。任何人都可以告诉我这是设计,错误还是功能?
可以替换lyaout.xml中定义的片段,所以我觉得有点奇怪的是它不应该删除它吗?
答案 0 :(得分:13)
从Honeycomb开始可用的本机API与支持库中的相同,因此您无法删除已在布局XML文件中声明的Fragment实例。
使用FragmentTransactions,您可以操作ViewGroups,例如LinearLayouts,它们充当容器以保存其他片段的布局。但是,当您在布局中声明Fragment
时,它没有相同意义上的容器,因为它永远是View层次结构的一部分,因此您无法将其删除。这是设计上的,以支持你永远不会删除的导航碎片之类的东西。 :)
有趣的是,我完全是偶然发现的,你可以将新的碎片添加到用布局中的标签声明的片段中;它充当其他碎片的容器
答案 1 :(得分:1)
我没有使用支持库v4。片段 在调用后提交FragmentTransaction后保持原位 去掉()。任何人都可以告诉我这是设计,错误还是功能?
这是设计(或缺少功能,如果你问我,不一定是一个功能:P)。因此,只要您使用支持库,就无法实现这一点。
答案 2 :(得分:1)
就像@ david-c-sainte-claire和@martín-marconcini所说,你不能使用remove()方法和FragmentTransaction来删除XML中定义的片段。这并不意味着你运气不好。您始终可以使用setVisibility()方法。
warning