android - 如何清除堆栈历史记录?

标签 android

考虑我有一个包含 Activity A、B、C 的应用程序。 A 从启动器启动,B 从 A 启动。B 有一个按钮。我的要求是单击 B 上的按钮, Activity 堆栈 A->B 的当前历史应该清除并且历史堆栈必须仅包含 C。是否可以这样做?如果是这样请告诉我...

提前致谢!

最佳答案

虽然繁琐,但可以通过使用 Activity 方法 startActivityForResult()、setResult()、finish() 和 onActivityResult() 启动来完成。

在伪代码中:

A: startActivityForResult(B)
B: startActivityForResult(C)
C: startActivity(D); setResult(CLEAR); finish()
D: ...
B: (onActivityResult) setResult(CLEAR); finish()
A: (onActivityResult) finish()

如果您愿意稍微更改您的架构,一种更“自然”的方法是使用 FLAG_ACTIVITY_CLEAR_TOP 来轻松地从 A、B、C 转到 A。

第三种方法是将 A、B 和 C 设置为使用 noHistory,但这样您将无法从 C 退出到 B 或 A。

关于android - 如何清除堆栈历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5037409/

相关文章:

java - 使用兼容性时从 Activity 中获取 FragmentTransaction 的问题

android - 获取原始文件夹中歌曲的歌曲时长并将其转换为String数组?

Android 不尊重颜色!

java - svg 文件在 android 中呈现

java - native_init() 链接错误

android - 有没有解析pkcs7的python包?

android - Tasker 插件变量替换 : Developer

android - 非常长的字符串 Eclipse Android

Android SoftKeyboard onKeyDown/Up 未检测到 'alternative' 键

java - 如何通过另一个fragment中的onClick调用一个fragment中的方法?