我有 3 项活动。从第三个活动开始,我需要在单击 GUI 按钮时回到第一个活动。我知道我可以单击“物理”后退按钮 2 次来完成此操作,但这不是一个选项。
那么,有什么方法可以在不创建新实例的情况下显示第一个活动?我可以将第一个活动的实例传递给第三个活动,这没有问题。
我有 3 项活动。从第三个活动开始,我需要在单击 GUI 按钮时回到第一个活动。我知道我可以单击“物理”后退按钮 2 次来完成此操作,但这不是一个选项。
那么,有什么方法可以在不创建新实例的情况下显示第一个活动?我可以将第一个活动的实例传递给第三个活动,这没有问题。
在您的意图中使用FLAG_ACTIVITY_CLEAR_TOP。
从文档中:
例如,考虑一个由以下活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 并带有一个解析为活动 B 的组件的 Intent,那么 C 和 D 将完成并且 B 接收给定的 Intent ,导致堆栈现在是:A,B。
要使用:
Intent intent = new Intent(getBaseContext(), FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Intent intent = new Intent(src_ctxt, dest.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
src_ctxt.startActivity(intent);
这应该这样做
我认为你需要让你的活动 B 单一实例,如果它已经创建你不想再次创建,那就是活动的启动模式可以在清单 android:launchMode 中定义,它定义了活动将如何被实例化。
在你的情况下使用 android:launchMode="singleInstance"
或者
您可以使用标志 Intent.FLAG_ACTIVITY_NEW_TASK。如果活动已经在运行,它将把它放在前面而不是创建新活动。