【问题标题】:Correct way to close fragments关闭片段的正确方法
【发布时间】:2013-02-17 07:23:48
【问题描述】:

这个问题有两个部分。

假设我们有一个 Activity 和两个片段:一个 ListFragment 和一个 Fragment(当您从 ListFragment 中单击一个项目时会显示)。

第 1 部分

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

第 2 部分

我知道如何创建一个片段并替换它,因为它在开发网站上,但我对关闭一个有疑问。我应该如何真正关闭它?类似以下代码的内容是否正确?假设片段被添加到 BackStack。

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

非常感谢。

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.remove(this);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    ft.commit();
    

    【讨论】:

      【解决方案2】:
      1. 我更喜欢有一个愚蠢的片段,它不知道它在哪里被使用,这样你就可以在任何你想要的活动中使用它,它会有你设定的精确目标为了它 。当然,你可以为所欲为。

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

      【讨论】:

        猜你喜欢
        • 2012-10-28
        • 2022-01-09
        • 2015-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多