【问题标题】:How to know if all fragments were detached?如何知道所有碎片是否已分离?
【发布时间】:2016-02-12 02:48:50
【问题描述】:

在我的应用中,我使用的是主 Activity,它有一个导航抽屉,当用户从抽屉中转到一个选项时,它会根据所选选项更改正在显示的片段。

如果用户多次点击“后退按钮”,它会返回到一个点,在该点它将到达我的主活动,这是一个空白和空的布局。

当我到达这一点(我的主要活动,空)时,我想退出应用程序,或者打开导航抽屉。

问题是,我不知道有任何事件表明我回到了主要活动。我检查了 onResume,但它从未被调用,这是有道理的,因为主要活动从未停止过。

我想也许片段管理器会在分离片段时在 Main Activity 上调用一个事件,然后我可以从那里检查是否根本没有附加片段?

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    当你推送你的第一个片段时,给它添加一个标签。类似的东西

    transaction.replace( R.id.rootContainer, firstFragment, "rootFragment");
    

    当用户按下返回按钮时,您可以从 FragmentManager 获取您的 rootFragment

    FirstFragment myFragment = (FirstFragment) getSupportFragmentManager().findFragmentByTag("rootFragment");
    

    并通过myFragment.isVisible()检查该片段是否可见,如果不可见,则继续弹出堆栈,如果可见,则表示用户在第一个片段上。现在您可以退出应用程序,或显示您的菜单抽屉。

    【讨论】:

      【解决方案2】:

      晚安,先生。谢谢你的小费。 根据您的回复,我使用了一种不同的方法,这给了我很多见解。

      在主要活动中,我重写了 onKeyDown 并检查它是否按下了返回按钮。如果是,那么我检查我的 Back Stack 的大小。

      然后,我决定是否要完成我的申请。

      另外,感谢“标记”后堆栈上的片段的提示,不知道我能做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2020-08-12
        • 2011-02-16
        相关资源
        最近更新 更多