2014-04-24 144 views
0

我的操作栏包含两个选项卡(业务列表和业务地图)。如果有人从列表中选择我想隐藏标签并显示该商家的页面。如果用户退后,业务片段将弹出,并且应再次显示选项卡。Android - 导航回选项卡片段

什么是最好的方法来得到这个工作?到目前为止,我有一个莫名其妙的递归循环,如果我弹出业务片段:(

因此,图片显示, 。导航模式,以标准打的返回键,并在BusinessListFragment的的onResume()我有这样的:

ActionBar ab = mHostingActivity.getSupportActionBar(); 
    if (ab.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD) 
     ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

这是应该带回的标签,但应用程序与环冻结的标签当然,我的代码中有些奇怪的东西(我敢肯定我不会这么做),或者Android在设置naviagtion模式时会做一些奇怪的事情吗?

编辑:我了解到,简单地将导航模式设置为选项卡似乎实际上选择第一个选项卡 - 我相信这将解释递归。有趣!

回答

0

好了好这个花了一段时间来弄清楚,但希望这将有助于未来的Google:d

这似乎是最好的做法是永远不会被从内部设置导航模式试图隐藏/显示选项卡的标签片段的onResume/onPause或其中的任何地方。

因此,我在detail(business)片段的onResume()中将模式设置为Standard。通常情况下,如果没有更多层次的导航可以从细节片段中遍历,则可以简单地将模式设置回细节片段的onPause()中的制表符 - 考虑反向按下或向上按下。

但是在我的情况下,您可以单击业务页面内的元素来启动另一个片段(使堆栈数为3),这意味着我无法在onPause()中打开选项卡,并发现最佳解决方案是在onDetach()中做。这应该意味着只有在细节片段实际从堆栈弹出时才会打开选项卡。

希望这个解决方案是准确的,我玩过很多想法,包括后台堆栈监听器和覆盖onBackPressed,但对我来说这似乎是最好的选择。