我正在研究一个具有经典列表内容模式的应用程序,显示左侧菜单选项列表和中心内容。不同的菜单选项将内容与显示新信息的相应片段交换。
我正在努力实施适当的导航:
|---------------------------------------|
|< 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按钮时 我会启动作为前一个片段引用的片段。我讨论了这个解决方案,但很快意识到这可能变得很漂亮 背板很复杂,更不用说听起来很笨拙了。
有没有一种聪明的方法来实现这种行为?
答案 0 :(得分:0)
简短回答:你的设计错了 模拟主页上的背压是很疯狂的,将用户带到他从未去过的屏幕上只是疯了!
答案很长:如果你想实现这样的疯狂:因为你不能在后面的堆栈中插入一个片段,我会在所选的ActionBar项目上打开片段E,然后自动启动片段E.2?
其他解决方案:如果片段E.2从ActionBar打开,您也可以从片段E.2的onPause()启动片段E.