2012-01-18 100 views
10

是可以使用FragmentTransaction和remove()方法来摆脱在layout.xml中定义的片段(使用片段标签)?我可以删除layout.xml文件中定义的片段吗?

我没有得到这个工作使用支持库v4。在调用remove()之后,片段保留在您提交FragmentTransaction后的位置。任何人都可以告诉我,如果这是由设计,错误或功能?

有可能替换已在lyaout.xml定义的片段,所以觉得有点奇怪,它不应该有可能将其删除?

回答

11

开始提供蜂窝状的原生API的工作方式相同那些在支持libarary,所以你不能删除已在布局XML文件被宣布片段的一个实例。

随着FragmentTransactions你操纵ViewGroups如充当容器持有其他碎片的布局LinearLayouts。但是,当您在布局中声明Fragment时,它没有具有相同意义的容器,因为它永远是View层次结构的一部分,因此无法将其删除。这是通过设计,以支持导航片段,你永远不会删除任何东西。 :)

有一两件事很有趣,而且我发现它完全是偶然,是你可以添加新的片段成与在布局标签声明的片段;并且它充当其他片段的容器

+0

好点。我现在看到删除布局xml(我的问题)中声明的片段和操作包含片段(Replace)的视图组之间的明显区别。 “ – 2012-01-18 07:55:42

+0

”但是,当你在你的布局中声明一个,它没有...“ 你忘了单词”Fragment“ – Gonzo 2014-01-18 04:47:36

1

我没有这个使用支持库V4工作。在调用 remove()后,片段 保留在您提交FragmentTransaction后。任何人都可以告诉我,如果这是由设计,错误或功能?

这是由设计(或缺少的功能,而不是绝对是一个功能,如果你问我:P)。所以只要你使用的支持库,你不能实现这一点。

+0

感谢您的回答。你确定你可以使用本地Honeycomb应用吗? – 2012-01-18 07:53:14

+1

我很抱歉,我不知道。 – 2012-01-18 09:24:31

1

像@ david-c-sainte-claire和@martín-marconcini所说的,你不能使用remove()方法和FragmentTransaction去除在XML中定义的片段。这并不意味着你运气不好。您始终可以使用setVisibility()方法。

findViewById(R.id.fragment_main).setVisibility(View.GONE); 
相关问题