如何从布局中删除动态添加的片段

9

请问有人能帮助我吗? 我有一个碎片Fragment A,我动态地将它添加到布局中...假设我已经向该布局添加了3个Fragment A实例,那么我如何以编程方式删除这3个碎片实例呢?我尝试过谷歌搜索和其他StackOverflow线程,但它们都没有起作用...

请帮帮我。

谢谢。

1个回答

27

其实很简单:

假设你是这样添加片段的:

fragmentTransac.add(R.id.content, fragA);

相反,您也需要使用标签来添加它

fragmentTransac.add(R.id.content, new FragA(), "first");
// then the other
fragmentTransac.add(R.id.content, new FragA(), "second");

然后移除:

Fragment f = getFragmentManager().findFragmentByTag("first");
if(f!=null) fragmentTransac.remove(f);
fragmentTransac.commit();

愉快的编码 =]


嗨,感谢你的帮助...但它没有起作用..你能建议另一种方法吗? - Sam
那就是方法。如果它不起作用,那是因为它没有被正确实现。你明白我在示例中放置的fragmentTransac对象是通常从getFragmentManager().beginTransaction()获取的FragmentTransaction吗?另外,如果你正在使用兼容包而不是getFragmentManager(),你应该调用getSupportFragmentManager()吗?我没有包含这些细节,因为它们非常基础。 - Budius
我知道这些东西... 我写成了如下代码: Fragment f = getSupportFragmentManager().findFragmentByTag("hi"); FragmentTransaction ft=getSupportFragmentManager().beginTransaction(); ft.remove(f); - Sam
4
你有没有忘记提交(commit)? - Budius
非常感谢,它节省了我的时间 :) - Android Dev
你太棒了。你的解决方案如此清晰,我们感到非常高兴。 - hikmet_anil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接