你不能这样做。启动 C 时需要finish()
A。我最喜欢的方法如下:
在 B 中,当您要启动 C 时,请执行以下操作:
Intent intent = new Intent(B.this, A.class); //Return to the root activity: A
intent.putExtra("launchActivityC", true);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //this will clear the entire task stack and create a new instance of A
startActivity(intent);
这将清除整个任务堆栈(即:完成活动 B 和 A)并创建活动 A 的新实例。
现在,在onCreate()
活动 A 中,执行此操作(在调用 之后super.onCreate()
):
if (getIntent().hasExtra("launchActivityC")) {
// User wants to launch C now and finish A
Intent intent = new Intent(this, C.class);
startActivity(intent);
finish();
return; // Return immediately so we don't continue with the rest of the onCreate...
}
您正在做的是将您的根活动 A 用作一种“调度程序”。