Android中Activity栈背面的操作

Jea*_*ean 5 android

可能的重复:
从历史堆栈中删除一个活动

假设我的堆栈上有三个活动,像这样 A ? 乙?C.
我想终止 B 并用活动 D 替换它,这样堆栈看起来像这样: A ? ? C.
预期效果是有一个“屏幕选择器”活动 C. 它在活动 B 的顶部打开,提供许多可供选择的内容,当用户单击其中一个时,它会关闭,显示所选屏幕。我可以使用 overridePendingTransition 取消打开动画,但这并不能帮助我通过关闭选择器界面来显示活动。

有没有办法在Android中做到这一点?

Jea*_*ean 1

我有两个真正的答案。第一个并不完美,但很容易实现;第二个应该给出预期的结果,但实施起来比较困难。

一种是使用 FLAG_ACTIVITY_REORDER_TO_FRONT 和 FLAG_ACTIVITY_PREVIOUS_IS_TOP 启动活动。这将为任何现有活动提供预期行为。如果活动尚未位于堆栈后面,尤其是在第一次启动时,它仍然不起作用。

另一种可能性 - 我还没有实现 - 是创建一个非常像 TabHost 的 ActivityManager 并将意图传递给这个家伙。然后,它负责在其 onNewIntent() 方法中加载下一个活动。这应该可行并允许单独开发单独的活动。