如何同时完成()两个活动?

How to finish() two activities at the same time?

我正在为小孩子编写一个数学应用程序来学习数学。它首先提示用户 select 他们想要什么样的问题 (MainActivity),然后它会显示一堆问题 (QuestionsActivity)。在回答 10 个问题后,它会告诉您哪些问题您回答正确,哪些没有回答 (ResultsActivity)。

我知道 Android 将所有活动放在堆栈上。在我的例子中,它看起来像这样:

ResultsActivity
QuestionsActivity
MainActivity

并且当您调用 finish 时,一个 activity 会从堆栈中弹出。我希望在 ResultsActivity 中有一个返回主菜单按钮以返回到 MainActivity。但是,如果我在 ResultsActivity 中调用 finish,用户将看到 QuestionsActivity!那么我要如何在这两项活动中调用 finish

您可以通过再次启动 MainActivity 并使用以下标志清除堆栈来清除堆栈:

  final Intent intent = new Intent(context, MainActivity.class);
  intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  startActivity(intent);

两个选项:

  1. 调用启动 ResultsActivity 后,在 QuestionsActivity 中调用 finish()。这会将其从堆栈中移除,以便从 ResultsActivity returns 返回到 MainActivity.
  2. 在返回 MainActivity 的意图中使用 Intent.FLAG_ACTIVITY_CLEAR_TOP。这将清除其上的所有活动。