使用片段和活动进行导航

时间:2015-05-19 22:00:33

标签: android android-fragments

我正在尝试使用向上导航模式,并且在使用片段和活动时遇到问题。假设我有活动A,该活动包含片段a。现在我点击片段a中的某些内容,片段交换发生片段b替换a和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中按下向上,我只想要A不要恢复它的片段状态。

Intended up behaviour

编辑: 我现在用于向上导航的模式是在我的清单中我将A定义为B的父级,在活动B中我有一个工具栏,我将其设置为带有setDisplayHomeAsUpEnabled的supportActionBar。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

编辑:我现在用于向上导航的模式是   我的清单我将A定义为B的父母,而在活动B中我将其定义为   我设置为supportActionBar的工具栏   setDisplayHomeAsUpEnabled。

说我的建议是在去B时弹出A(b)。

当您致电navigateUpFromSameTask时,它会完成当前活动并启动(或恢复)相应的父活动。如果目标父活动在任务的后台堆栈中,则将其提前。这就是你遇到这种行为的原因。