【问题标题】:Always have Activity on bottom of back stack始终在后堆栈底部有 Activity
【发布时间】:2013-11-21 17:02:37
【问题描述】:

我有一个带有Navigation Drawer 设计和一些活动的应用程序(我知道在这里使用 Fragments 可能会更容易,但那是不可行的)。

当用户点击一个drawer item时,相应的Activity会以FLAG_ACTIVITY_REORDER_TO_FRONT启动。向上按钮应始终将用户带回到启动活动A,因此当按下向上按钮时,我也会使用相同的标志启动A 活动。

考虑以下(大写字母是活动,试图在这里可视化后台):

A

用户从抽屉中启动 B

A -> B

用户按下向上按钮,将 A 放在前面

B -> A

用户按下后退按钮完成 A 回到 B

B 

用户再次按下后退按钮退出应用程序,但恕我直言,用户应该在离开应用程序之前再次看到启动 Activity A。

你们会/是如何解决这个问题的?

编辑:@Neil,即:如果我有

A -> B

然后从那里通过抽屉转到 C 我有

A -> B -> C

如果用户现在按下向上按钮,而我只是关闭 C 而不是将 A 带到顶部,用户将返回 B,这是错误的,因为 C(导航)不在 B 下,但它们是“兄弟姐妹” .

【问题讨论】:

  • finish()开始Activity A是什么时候去Activity B?如果不是,请不要使用FLAG_ACTIVITY_REORDER_TO_FRONT,只需在返回Activity A 时完成Activity B
  • 你也可以这样做:)
  • @Neil 感谢您的输入,我试过了,但我在编辑中描述的有问题。
  • 当您通过抽屉打开一个新活动时,您应该关闭前一个活动。所以基本上 Activity A 将永远是父 Activity(在堆栈的底部),而任何其他 Activity 将永远是子 Activity。您应该找到一种始终只有一个孩子在 A 之上的方法,因此请记住从抽屉中打开了哪些活动,然后在使用抽屉再次导航时杀死任何其他打开且不是 A 的活动。活动 A 是实现抽屉的活动?
  • 我想我会这样做的。我认为当用户从 A 到 B 再到 C 时,后退按钮应该将他带回 B,但由于 B 和 C 是兄弟姐妹,因此可能没有必要。感谢您的帮助:)

标签: android android-navigation


【解决方案1】:

尝试在清单文件中将该 Activity B 的启动模式设置为 SingleTask,如下所示:

android:lanchMode="singleTask"

您的活动将不会再次被调用。

【讨论】:

  • 您刚刚在代码中描述了问题。他想在关闭应用程序之前查看活动 A..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2011-05-05
  • 2021-05-20
  • 2015-09-14
  • 1970-01-01
  • 2011-06-09
相关资源
最近更新 更多