2016-02-12 64 views
0

在我的应用程序中,我使用的是一个主要活动,其中有一个导航抽屉,并且当用户转到抽屉中的选项时,它会相应地将选定的选项更改为显示的片段。如何知道所有碎片是否被分离?

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

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

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

我想也许会有一个片段管理器的事件,当一个片段被分离时会在主要活动上调用,并且从那里我可以检查是否没有连接片段?

回答

0

当你推动你的第一个片段时,向它添加一个标签。像

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

东西只要用户按下后退按钮,你可以从FragmentManager

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

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

0

晚安好先生。感谢您的提示。 我使用了不同的方法,基于您的重新应用,这给了我不少见解。

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

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

另外,感谢“贴标签”背部堆栈上的碎片,我不知道我能做到这一点。

相关问题