2015-05-19 118 views
2

我正在尝试使用向上导航模式,并在使用片段和活动时遇到问题。假设我有活动A并且该活动包含片段a。现在我单击片段a中的某个片段,并且片段b发生片段b替换,并将a放入后端堆栈中。 “向上”箭头现在出现在我的工具栏中。这很好。现在我点击片段b中的内容并启动活动B. A是B的父项。现在,B有一个向上箭头,我希望当我触摸它时,我会到达顶部,即完成活动B和A的后退堆栈将被弹出,所以我们结束活动A包含片段a和空回栈。向上导航的片段和活动

这里我的问题是,当在B中按下,B完成但A仍然显示片段b。有没有什么办法可以让A不会恢复其onActivityResult或类似的东西的片段后退状态,所以片段B从不会显示在从B开始的动作上?

我试过的是在启动B和弹出A的片段backstack onActivityResult时使用startActivityForResult,但是随后b在弹出堆栈之前暂时显示。我只想要一个没有恢复它,如果达在按下B.国家片段

Intended up behaviour

编辑: 我现在使用的最多的导航模式是,在我的清单我定义了一个作为B的父级和活动BI中有一个工具栏,我使用setDisplayHomeAsUpEnabled将其设置为supportActionBar。

+0

而不是在onActivityResult中尝试在调用startActivity(B)之后执行它。 – GuilhE

+1

您是否尝试过使用[NavUtils](http://developer.android.com/reference/android/support/v4/app/NavUtils.html)并在您的清单中声明父级活动?我认为您可以使用这些功能正确地返回到您的家长活动,一旦您按下选项菜单中的向上按钮,应该重建该活动。你没有详细说明你用来执行向上导航的方法。 –

+0

感谢您的评论家伙。 @GuilhE:这种方法的问题是,我想在用户按下后或在B之间做出区别。 – hordurh

回答

1

我在清单中将我的活动定义为“singleTop”。如果你删除了向上按钮导致任务被重新创建,这正是我想要的。

+0

你应该将你的答案标记为已接受,以便其他人知道问题已经解决。 –

+0

我必须等一天才能接受我自己的答案! – hordurh

0

编辑:我现在使用的最多的导航模式是,在 我的清单我定义了一个为B的母公司和活动B我有一个 工具栏,我设置为与 一个supportActionBar setDisplayHomeAsUpEnabled。

说,我的建议是雨后春笋般冒出A(B)去B.

当你打电话时navigateUpFromSameTask它完成当前的活动,并开始(或恢复)相应的父活动。如果目标父活动在任务的后退堆栈中,则将其提前。这就是为什么你正在经历这种行为。

+1

如果我正确地理解你,你建议当我打电话给startActivity(B)时,我应该弹出片段的堆栈A.从理论上讲,这是有道理的,因为A会在返回时变得干净,但这有两个问题。首先,我无法在onSaveInstanceState之后创建fragmentTransaction,其次,如果用户按下了物理后退按钮,我希望他在返回到活动A时以A(b)结束。但是,我感谢您的建议,但我没有downvote you :) – hordurh