关闭Fragment的正确方法

3
这个问题有两个部分。
假设我们有一个Activity,然后有两个片段:一个ListFragment和一个Fragment(当您从ListFragment点击一个项时将显示该Fragment)。
第1部分
关闭片段应该在哪里?我的意思是从设计的角度来看会被认为是什么好的。我看到两个选项:一种是在片段中声明接口,并让活动实现它,称之为closeFragment()。这将是一种从片段到活动的通信方式,就像Dev Site上所示。另一种可能相当简单,即调用getActivity().getSupportFragmentManager()并使用管理器关闭它。
第2部分
我知道如何创建和替换片段,因为它在Dev网站上,但我对关闭片段有疑虑。我应该怎么关闭它?像下面的代码是否正确?假设该片段已添加到BackStack中。
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
getSupportFragmentManager().popBackStack();
transaction.remove(this);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.commit();

非常感谢你。
2个回答

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

2
  1. 我更倾向于使用一个“哑”片段,它不知道自己被用在哪里,这样你可以在任何想用的活动上使用它,并且它会有你为其设置的精确目标。当然,你可以按照自己的意愿做任何事情。

  2. 这看起来像是关闭它,但我更喜欢替换它。只要你有引用,你也可以随时返回到该片段。


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