在启动活动4时从后堆栈中删除活动2和3

时间:2013-03-19 12:40:39

标签: android android-intent

我有4项Android活动。我们称之为 A B C D

正常流量 A => B => C => d 即可。但是,当我输入 D 时,我想从后台堆栈中删除 B C

可以解决吗?

请注意,如果用户在 C 中并按下,则仍应显示 B

编辑:使用CLEAR_TOP再次启动活动A再次在活动A上调用onCreate,我不想要。还有其他解决方案吗?

3 个答案:

答案 0 :(得分:3)

我知道这是一个老问题,但我最近遇到了同样的问题,无法在任何地方找到解决方案。我可以开始工作的唯一解决方案是一个黑客攻击:

使用startActivityForResult从 B 开始 C

Intent intent=new Intent(this,C.class);
startActivityForResult(intent,REQUEST_CODE);

在活动 C 中,为活动 D 创建意图并将其设置为结果:

Intent intent=new Intent(this,D.class);
setResult(RESULT_OK,intent)
finish();

在活动 B 中,完成并启动从活动 C 返回的意图:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode==REQUEST_CODE) {
        finish();
        startActivity(data);
    }
}

此时,活动 B C 将完成,活动堆栈将 A => d

答案 1 :(得分:0)

答案 2 :(得分:-1)

FLAG_ACTIVITY_CLEAR_TOP清除您的活动堆栈,您可以像下面的代码一样使用它:

intent = new Intent(this, YourActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
StartActivity(intent);