我的堆栈中当前有一些活动,让我们想象一下:
A、 B、C、D、E。
我在活动E中,我的"向上导航"应将活动A放在前面并完成(B、C、D)。
我目前与合作
case android.R.id.home:
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
finish();
return true;
这很好,活动A恢复到以前的状态,但(B,C,D)仍然存在。
有没有办法正确完成(B、C、D)?
注意:我正在搜索以避免像onActivityResult这样复杂的东西,这在复杂的应用程序结构中是不可能处理的
谢谢。
试试这个:
case android.R.id.home:
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
return true;
我认为FLAG_ACTIVITY_CLEAR_TOP
就是您所需要的:
如果设置了,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是关闭其上的所有其他活动,并且此Intent将作为新Intent传递给(现在位于顶部的)旧活动。
尽管如果您希望重用活动A的现有实例(通过onNewIntent()
),但您可能还需要在意图中设置FLAG_ACTIVITY_SINGLE_TOP
。