【问题标题】:Activities stack, singleTask, navigation活动堆栈、singleTask、导航
【发布时间】:2012-09-20 11:37:35
【问题描述】:
我有 3 个活动(A、B、C)。对于使用向上按钮从 B->A 和 C->B 导航,我使用 NavUtils.navigateUpFromSameTask(this);
我想要实现的是导航:
A->B->C 当我在 C 中时,我想启动 A 并将一些附加数据传递给 A。挑战是将 B、C 保留在堆栈中,以便 A 的硬件后退按钮返回到 C。
我尝试了默认启动模式,然后尝试了单任务启动模式。
默认启动模式:
问题是,当我从 B->A(带有向上按钮)导航时,重新创建了一个活动。我只想返回堆栈,因为它带有硬件后退按钮。
当我对 A、B、C 使用 singleTask 时,活动不会重新创建,但我无法从 A 回到 C。
有什么解决方法的建议吗?
谢谢
【问题讨论】:
标签:
android
android-activity
android-actionbar
【解决方案1】:
虽然你的问题不是很清楚,但我假设如果你的堆栈当前是
A->B->C
如果你想从 C 开始 A 并在附加文件中传递一些数据,那么你希望堆栈看起来像这样:
B->C->A
为此,您只需像这样从C 开始A:
Intent intent = new Intent(this, A.class);
intent.putExtra("key", "value); // Your extras
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
这会将A 的现有实例从堆栈的底部移动到顶部,并在A 的该实例上调用onNewIntent(),并使用包含“附加”的新Intent。当用户按下 BACK 时,这将结束 A 并返回到 C。