在我的应用程序中,我使用的是一个主活动,它有一个导航抽屉,当用户从抽屉转到选项时,它会根据所选的选项更改显示的碎片。
如果用户点击"后退按钮"好几次,它会回到一个点,它将到达我的主要活动,这是一个空白和空白的布局。
当我到达这一点(我的主要活动,空)时,我想退出应用程序,或者打开导航抽屉。
问题是,我不知道有任何事件表明我回到了主要活动。我检查了onResume,但它从未被调用,这是有道理的,因为主要活动从未停止过。
我想也许会有片段管理器中的一个事件,当一个片段被分离时会在主要活动上被调用,从那里我可以检查是否没有连接片段?
答案 0 :(得分:0)
当您推送第一个片段时,请为其添加标签。像
这样的东西transaction.replace( R.id.rootContainer, firstFragment, "rootFragment");
每当用户按下后退按钮时,您都可以从FragmentManager
获取rootFragmentFirstFragment myFragment = (FirstFragment) getSupportFragmentManager().findFragmentByTag("rootFragment");
通过myFragment.isVisible()
检查此片段是否可见,如果没有,则继续弹出堆栈,如果可见,则表示用户在第一个片段上。现在您可以退出应用程序,或显示菜单抽屉。
答案 1 :(得分:0)
晚安,好先生。谢谢你的提示。 我根据你的情况使用了一种不同的方法,这给了我很多见解。
在主要活动中,我覆盖了onKeyDown并检查是否按了后退按钮。如果是,那么我检查我的Back Stack的大小。
然后,我决定是否要完成我的申请。
另外,感谢你对背板上的碎片进行“标记”的提示,不知道我能做到这一点。