正确的方法来关闭碎片

时间:2013-02-17 07:23:49

标签: android android-fragments

这个问题有两个部分。

假设我们有一个Activity,然后是两个片段:一个ListFragment和一个片段(当你点击ListFragment中的一个项目时会显示它。)

第1部分

我应该在哪里关闭片段?通过这个我的意思是从设计的角度来看会被认为是好的。我看到两个选项:一个声明片段中的接口并让活动实现它,让我们称之为closeFragment()。这将是一种从片段到活动的通信方式,如开发站点中所示。另一个可能非常简单,并且调用getActivity()。getSupportFragmentManager()并使用管理器关闭它。

第2部分

我知道如何创建一个片段并替换它,因为它在Dev网站上,但我对关闭它有疑问。我该怎么关闭呢?类似下面的代码是否正确?假设片段已添加到BackStack。

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
getSupportFragmentManager().popBackStack();
transaction.remove(this);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.commit();

非常感谢。

2 个答案:

答案 0 :(得分:5)

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.remove(this);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
ft.commit();

答案 1 :(得分:2)

  1. 我更喜欢有一个愚蠢的片段,它不知道它在哪里使用,所以你可以在你想要的任何活动上使用它,它会有你设定的精确目标为了它 。当然,你可以做任何你想做的事。

  2. 这看起来像关闭它,但我宁愿替换它。只要您有对它的引用,您也可以始终返回到该片段。