标志FLAG_ACTIVITY_CLEAR_TOP的活动(android)

Use*_*337 6 android

我有很多活动在彼此之后推出.
但在其中一项活动中,我需要用旗帜启动该特定活动FLAG_ACTIVITY_CLEAR_TOP.

这样它就可以完成之前的所有活动并开始.

问题我面临的问题是我不想完成堆栈中的某个活动,它应该是新发布的活动的存在.

假设我有活动[A] [B] [C] [D]
我在启动[D]活动FLAG_ACTIVITY_CLEAR_TOP后开始活动,[D]它会破坏所有活动,我希望活动[B]在后面继续运行,当我们按下后面的键时[D]它应该显示活动[B].

这该怎么做?

谢谢,
PP.

Mud*_*sir 6

一种解决方案是[B]使用标志调用Activity FLAG_ACTIVITY_CLEAR_TOP,这将破坏所有活动[B].之后,调用Activity [D].

  • 你不注意PP. (2认同)

Whi*_*e-E 3

就像@Mudassir 所说,开始活动[A]。当你调用[B]时,只需使用FLAG清除除[B]之外的所有数据,然后你可以在[B]中不带标志的情况下调用[D];从而得到你想要的[B][D]?然后按后退按钮,您将从 [D] 转到 [B],而没有任何其他数据?。你似乎并不认为他希望你用[D]的旗帜打电话给[B],这样做的目的是什么?那时你最终只会得到[B]。

-无论哪种方式,你都会一路失去[C]。解决方案可能是:

startActivity(A)
[in activity A] startActivity(B) - WITH CLEAR_TOP TO KILL [A]
[in activity B] startActivityForResult(C) - WHEN [C] IS finish() IT WILL COME BACK TO [B]
[in activity B, onActivityResult()] startActivity(D)
Run Code Online (Sandbox Code Playgroud)

这将为您提供[B]和[D],同时仍然到达[C]....尝试一下,它会起作用。