假设我有 3 个活动 A、B 和 C。A 导致 B 导致 C。我希望能够在 A 和 B 之间来回移动,但是一旦 C 开始,我想完成 A 和 B。我了解如何在通过意图启动 C 时关闭 B,但是如何在 C 启动时关闭 A?
问问题
243 次
2 回答
1
打开 C 活动时使用此标志。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
这将清除 C 之上的所有活动。
于 2013-03-21T19:27:15.263 回答
0
由于A
是您的根(开始)活动,请考虑A
用作调度程序。如果您想C
在它之前(下)启动并完成所有其他活动,请执行以下操作:
// Launch ActivityA (our dispatcher)
Intent intent = new Intent(this, ActivityA.class);
// Setting CLEAR_TOP ensures that all other activities on top of ActivityA will be finished
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add an extra telling ActivityA that it should launch ActivityC
intent.putExtra("startActivityC", true);
startActivity(intent);
在ActivityA.onCreate()
这样做:
super.onCreate();
Intent intent = getIntent();
if (intent.hasExtra("startActivityC")) {
// Need to start ActivityC from here
startActivity(new Intent(this, ActivityC.class));
// Finish this activity so C is the only one in the task
finish();
// Return so no further code gets executed in onCreate()
return;
}
这里的想法是您启动 ActivityA(您的调度程序),FLAG_ACTIVITY_CLEAR_TOP
以便它是任务中的唯一活动,并告诉它您希望它启动什么活动。然后它将启动该活动并自行完成。这将使您在堆栈中只剩下 ActivityC。
于 2013-03-21T21:03:58.187 回答