首页 > 解决方案 > 从堆栈历史记录中清除特定活动

问题描述

假设我有名为 A、B、C、D 的活动。现在,考虑 A 已作为根活动启动,B 已从 A 启动,C 已从 B 启动,D 已从 C 启动。现在我有一个活动 D 中名为“成功”的按钮。如果假设,我在活动 D 中按下按钮“成功”,则应从历史堆栈中删除活动 C 并转到活动 B,但在从活动中按下返回键D 应该显示活动 C 而不是 B 并从堆栈中清除 D。请问谁能帮我解决这个问题?

标签: android

解决方案


当您单击 Success 按钮时,您可以使用以下代码行打开您的 B 活动:

Intent d_intent = new Intent(D.this, B.class);
d_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
d_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(d_intent);
finish();

这里 Activity B 将从后面的堆栈而不是新实例启动,因为Intent.FLAG_ACTIVITY_CLEAR_TOPIntent.FLAG_ACTIVITY_NEW_TASK清除堆栈并使其成为顶部。因此,当我们按下后退按钮时,整个应用程序将被终止。在 Back press 上,您只需调用

finish();

希望它会帮助你。


推荐阅读