Android 关闭碎片的正确方法

Android 关闭碎片的正确方法,android,android-fragments,Android,Android Fragments,这个问题有两个部分 假设我们有一个活动,然后有两个片段:一个ListFragment和一个片段(当您从ListFragment中单击一个项目时将显示) 第1部分 我应该在哪里关闭碎片?我的意思是,从设计的角度来看,什么是好的。我看到两个选项:一个在片段中声明接口,让活动实现它,我们称之为closeFragment()。这将是一种从片段到活动的通信方式,如Dev站点中所示。另一个可能非常简单,调用getActivity().getSupportFragmentManager()并使用管理器关闭它

这个问题有两个部分

假设我们有一个活动,然后有两个片段:一个ListFragment和一个片段(当您从ListFragment中单击一个项目时将显示)

第1部分

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

第二部分

我知道如何创建一个片段并替换它,因为它在开发人员的网站上,但我怀疑是否要关闭一个片段。我应该如何关闭它?下面的代码是否正确?假设碎片被添加到backbackback中

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
getSupportFragmentManager().popBackStack();
transaction.remove(this);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.commit();
多谢各位

  • 我更喜欢有一个哑片段,它不知道它在哪里被使用,这样你就可以在任何你想要的活动中使用它,它会有你为它设定的精确目标。当然,你可以随心所欲

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

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