我有 4 个 Android 活动。我们称它们为A、B、C、D。
正常流程是A => B => C => D。但是,当我输入D时,我想从后堆栈中删除B和C。
可以解决吗?
请注意,如果用户在C中并按下回,则B仍应显示!
编辑:使用 CLEAR_TOP 再次启动活动 A 确实在我不想要的活动 A 上再次调用 onCreate 。还有其他解决方案吗?
我有 4 个 Android 活动。我们称它们为A、B、C、D。
正常流程是A => B => C => D。但是,当我输入D时,我想从后堆栈中删除B和C。
可以解决吗?
请注意,如果用户在C中并按下回,则B仍应显示!
编辑:使用 CLEAR_TOP 再次启动活动 A 确实在我不想要的活动 A 上再次调用 onCreate 。还有其他解决方案吗?
我知道这是一个老问题,但我最近遇到了同样的问题,在任何地方都找不到解决方案。我可以开始工作的唯一解决方案是有点破解:
使用 startActivityForResult从B开始C。
Intent intent=new Intent(this,C.class);
startActivityForResult(intent,REQUEST_CODE);
在 Activity C中,为 Activity D创建意图并将其设置为结果:
Intent intent=new Intent(this,D.class);
setResult(RESULT_OK,intent)
finish();
在 Activity B中,完成并启动从 Activity C返回的意图:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==REQUEST_CODE) {
finish();
startActivity(data);
}
}
此时,活动B和C都将完成,活动堆栈将为A => D
FLAG_ACTIVITY_CLEAR_TOP 清除您的 Activity 堆栈,您可以像下面的代码一样使用它:
intent = new Intent(this, YourActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
StartActivity(intent);