2013-07-19 35 views
0

我有3项活动。从第三项活动中,我需要在单击GUI按钮时回到第一项活动。我知道我可以点击“物理”后退按钮2次,但这不是一个选项。那么,有什么方法可以显示第一个活动,而不需要创建一个新的实例?我可以将第一个活动的实例传递给第三个活动,没有问题。如何导航到特定活动?

请帮忙

+1

使用导航抽屉与动作栏组合。 http://developer.android.com/design/patterns/navigation.html – Raghunandan

回答

1

请按照您的意图使用FLAG_ACTIVITY_CLEAR_TOP

从文档:

例如,考虑一个由任务的活动:A,B,C,D,如果d用解析为活动B的成分的意图调用startActivity() ,则C和d将完成和B接收给定的意图,导致堆栈现在是:A,B.

要使用:

Intent intent = new Intent(getBaseContext(), FirstActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

我应该在哪个类中添加这个?在第一次活动还是第三次?我添加到第三个,似乎不起作用 –

+0

第三个活动,指向'FirstActivity.class' – nickaknudson

+0

该文档准确地解释了您正在尝试执行的操作(请参阅编辑)。如果它不能正常工作,你必须正确地做其他事情。 – nickaknudson

0
Intent intent = new Intent(src_ctxt, dest.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
src_ctxt.startActivity(intent); 

这应该这样做

0

我认为你需要让你的活动B singleInstance,如果它已经创造你不想再创造,这是launch mode of the activity可以在清单的Android定义:launchMode定义如何活动将立即展开。

你的情况采用Android:launchMode = “singleInstance”

您可以使用标志Intent.FLAG_ACTIVITY_NEW_TASK。如果活动已经在运行,它会将其放在前面,而不是创建新的活动。

+0

“您可以使用标志Intent.FLAG_ACTIVITY_NEW_TASK ...”不是事实...;) – Trinimon

+0

此标志将使活动成为新任务的开始。否则你也可以使用FLAG_ACTIVITY_SINGLE_TOP,如果它在历史堆栈中,它将加载活动。 –