我有3项活动。从第三项活动中,我需要在单击GUI按钮时回到第一项活动。我知道我可以点击“物理”后退按钮2次,但这不是一个选项。那么,有什么方法可以显示第一个活动,而不需要创建一个新的实例?我可以将第一个活动的实例传递给第三个活动,没有问题。如何导航到特定活动?
请帮忙
我有3项活动。从第三项活动中,我需要在单击GUI按钮时回到第一项活动。我知道我可以点击“物理”后退按钮2次,但这不是一个选项。那么,有什么方法可以显示第一个活动,而不需要创建一个新的实例?我可以将第一个活动的实例传递给第三个活动,没有问题。如何导航到特定活动?
请帮忙
请按照您的意图使用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);
我应该在哪个类中添加这个?在第一次活动还是第三次?我添加到第三个,似乎不起作用 –
第三个活动,指向'FirstActivity.class' – nickaknudson
该文档准确地解释了您正在尝试执行的操作(请参阅编辑)。如果它不能正常工作,你必须正确地做其他事情。 – nickaknudson
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 singleInstance,如果它已经创造你不想再创造,这是launch mode of the activity可以在清单的Android定义:launchMode定义如何活动将立即展开。
你的情况采用Android:launchMode = “singleInstance”
或
您可以使用标志Intent.FLAG_ACTIVITY_NEW_TASK。如果活动已经在运行,它会将其放在前面,而不是创建新的活动。
“您可以使用标志Intent.FLAG_ACTIVITY_NEW_TASK ...”不是事实...;) – Trinimon
此标志将使活动成为新任务的开始。否则你也可以使用FLAG_ACTIVITY_SINGLE_TOP,如果它在历史堆栈中,它将加载活动。 –
使用导航抽屉与动作栏组合。 http://developer.android.com/design/patterns/navigation.html – Raghunandan