2013-03-01 54 views
0

我正在获取经典列表内容模式的应用程序,展示了左侧菜单选项和中心内容的列表。不同的菜单选项会将内容与显示新信息的相应片段交换。适当的Android向上导航片段

我正在与实施适当的向上导航挣扎:

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

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

如果用户现在按下按HOME键(如在家中一样)按钮,他将返回到片段B.这是按照计算的。

然而,片段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。 这对用户来说没有意义,所以我想实现一个系统,使用户现在可以使用Fragment E(即使Fragment B.2是后堆栈中的前一个片段)。

我的直接想法是引用片段,该片段应该像后面堆栈中的前一个片段一样,在每个片段内部起作用。 片段B.2会参考片段B,片段E.2会参考片段E等。当按下HOME按钮时 我会启动被引用为前一片段的片段。我辩论这个解决方案,但很快意识到这可能会变得很复杂,关于后退堆栈,更不用说它听起来非常笨拙。

是否有智能的方法来实现这种行为?

+0

如果他按下当前实现(getActivity()。onBackPressed())的HOME按钮,那是什么意思? BackPressed与家庭不同.. – 2013-03-01 17:09:08

+0

感谢您的反馈。我更新了这篇文章,澄清了我的意思..我当前的实现是在主页按钮被按下时手动调用onBackPressed()方法,这会导致意外的行为。 – 2013-03-01 21:41:04

回答

0

简短回答:你的设计是错误的 在主键上模拟一个背按键是疯狂的,并将用户带到他从未去过的屏幕上只是疯了!

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

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

+0

我知道模拟背部按压的实现是不够的,这是我作为一个临时解决方案。我对提示如何更好地实现主页按钮功能非常感兴趣。据我所知,它应该让用户从他目前的位置上升一级。我怎样才能在我的应用程序中指定不同的级别,然后让主页按钮像这样工作?再次感谢您的输入。 – 2013-03-02 11:26:29

+0

我提出的两个想法呢? – 2013-03-02 11:30:02

+0

对不起,我的上一条评论提交得太快了。现在做了一些编辑。而不是实施“疯狂”的解决方法,我想进行一些调整并实现更好的设计:-) – 2013-03-02 11:35:49