我可以删除layout.xml文件中定义的片段吗?

时间:2012-01-18 01:00:59

标签: android android-3.0-honeycomb android-fragments

是否可以使用FragmentTransaction和remove()方法去除layout.xml中定义的片段(使用片段标记)?

我没有使用支持库v4来实现这一点。在调用remove()之后,在提交FragmentTransaction之后片段保持不变。任何人都可以告诉我这是设计,错误还是功能?

可以替换lyaout.xml中定义的片段,所以我觉得有点奇怪的是它不应该删除它吗?

3 个答案:

答案 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