我有4项Android活动。我们称之为 A , B , C , D 。
正常流量 A => B => C => d 即可。但是,当我输入 D 时,我想从后台堆栈中删除 B 和 C 。
可以解决吗?
请注意,如果用户在 C 中并按下,则仍应显示 B !
编辑:使用CLEAR_TOP再次启动活动A再次在活动A上调用onCreate,我不想要。还有其他解决方案吗?
答案 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);