适当的Android导航与片段

时间:2013-03-01 16:46:11

标签: android android-fragments

我正在研究一个具有经典列表内容模式的应用程序,显示左侧菜单选项列表和中心内容。不同的菜单选项将内容与显示新信息的相应片段交换。

我正在努力实施适当的导航:

|---------------------------------------|
|< Frag. B |                B1  B2  B3  |
|----------|----------------------------|
|Fragment A|                            |
[Fragment B]                            |
|Fragment C|        Fragment B.2        |
|Fragment D|                            |
|Fragment E|                            |
|----------|----------------------------|

在上图中,用户已导航到Fragment B.2。他首先从菜单中选择片段B,之后他按下一个按钮,将他“进一步”进入片段B,进入片段B.2。

如果用户现在按下HOME(如在home中一样)按钮,他将返回片段B.这是有意为的。

但是,在Fragment B.2中,ActionBar中有一个按钮,用户将用户带到片段E.2:

|---------------------------------------|
|< Frag. E |                E1  E2  E3  |
|----------|----------------------------|
|Fragment A|                            |
|Fragment B|                            |
|Fragment C|        Fragment E.2        |
|Fragment D|                            |
[Fragment E]                            |
|----------|----------------------------|

当用户到达片段E.2时,后栈中的前一片段是片段B.2。我当前的实现只是在按下HOME按钮时调用getActivity().onBackPressed(),用户只需返回片段B.2。 这对用户没有意义,所以我想实现一个系统,将用户带到片段E(即使片段B.2是后栈中的前一个片段)。

我的直接想法是在每个片段内部引用一个片段,该片段应该像后一个片段中的前一个片段一样。 片段B.2将引用片段B,片段E.2将引用片段E等。当按下HOME按钮时 我会启动作为前一个片段引用的片段。我讨论了这个解决方案,但很快意识到这可能变得很漂亮 背板很复杂,更不用说听起来很笨拙了。

有没有一种聪明的方法来实现这种行为?

1 个答案:

答案 0 :(得分:0)

简短回答:你的设计错了 模拟主页上的背压是很疯狂的,将用户带到他从未去过的屏幕上只是疯了!

答案很长:如果你想实现这样的疯狂:因为你不能在后面的堆栈中插入一个片段,我会在所选的ActionBar项目上打开片段E,然后自动启动片段E.2?

其他解决方案:如果片段E.2从ActionBar打开,您也可以从片段E.2的onPause()启动片段E.