【发布时间】:2012-05-31 00:33:03
【问题描述】:
我只是在学习 Android 编程。我理解它的方式是服务像堆栈一样工作,有没有办法让一个活动返回到启动应用程序的第一个活动,而不仅仅是前一个活动。
例如,假设我有 4 个活动,a、b、c、d。有没有办法让活动 d 有一个可以调出活动 a 的按钮?而不是活动d去c,c回到b???
【问题讨论】:
标签: android
我只是在学习 Android 编程。我理解它的方式是服务像堆栈一样工作,有没有办法让一个活动返回到启动应用程序的第一个活动,而不仅仅是前一个活动。
例如,假设我有 4 个活动,a、b、c、d。有没有办法让活动 d 有一个可以调出活动 a 的按钮?而不是活动d去c,c回到b???
【问题讨论】:
标签: android
你可以重新开始活动a,但是在你的意图中使用一个标志:
FLAG_ACTIVITY_REORDER_TO_FRONT
来自android docs:
如果在传递给 Context.startActivity() 的 Intent 中设置,此标志将导致已启动的 Activity 被带到其任务历史堆栈的前面(如果它已经在运行)。
使用它,您将重用已运行的活动实例a,而不是启动一个新实例。请注意,这样做,活动 b、c 和 d 的实例将保留在后台堆栈中(现在在活动 a)。
否则,如果您想完成此活动(并将它们从后台堆栈中删除),您可以使用 this other flag 启动活动 a(来自 d):
FLAG_ACTIVITY_CLEAR_TOP
如果设置了,并且正在启动的 Activity 已经在当前任务中运行,那么不会启动该 Activity 的新实例,而是关闭它之上的所有其他 Activity,并且此 Intent 将被传递到(现在在顶部)作为新意图的旧活动。
编辑:这是一个很好的阅读资源,如果您还没有这样做的话: Tasks and Back Stack.
【讨论】:
是的,你可以这样做。您只需将活动 a 的意图编码到按钮即可。
【讨论】:
使用命令
finish():
您将返回主页
或者写一个指向a的意图
【讨论】:
您可以通过Intents向不同的Activities发送信息。
Intent myIntent = new Intent(this, AvitivityName.class);
startActivity(myIntent);
别忘了在AndroidManifest.xml 中添加您的Activities。
这里有一些关于Android的教程Intents:
【讨论】: