我已阅读activities, stacks and launch modes,但很难理解如何将此信息应用于我的具体问题。
基本上我想要做的是启动一个新活动,并确保它占用了父级在堆栈中的位置,而不是放在堆栈的顶部。我有以下两种情况:
我有登录活动。用户登录时,将启动新活动。当用户点击“返回”时,我不希望他被发送回登录活动,而是退出程序。
我有一个活动显示在tabhost中(或者更确切地说是在tabhost中的framelayout中,我想)。此活动有一个按钮,单击此按钮可启动新活动。我希望这项新活动能够取代父母的位置。也就是说,我不想打开一个新的全屏活动,而是希望它在tabhost中将父元素放在framelayout中。此外,我不希望按反键来引导用户返回父活动。
如果有人能指出我正确的方向,我将不胜感激。提前谢谢。
答案 0 :(得分:0)
您只需在登录活动中拨打finish()
即可。这将把它从活动堆栈中删除。
这是一个更难的答案。我在这里最好的建议是使用ViewFlipper
而不是启动新的Activity
,您可以管理切换视图。或者,如果您需要按钮来启动新的Activity
,则可以使用ActivityGroup
并以此方式管理Activity
。他们都有自己的复杂性,所以你需要调查哪些可能更适合你。
答案 1 :(得分:0)
在第一种情况下,您需要在登录活动中调用finish()。 还要检查此清单设置以在启动新任务时完成活动。 http://developer.android.com/guide/topics/manifest/activity-element.html#finish
在第二种情况下,您可以使用两个视图作为框架或ViewFlipper。然后覆盖keyevent以处理后退按钮单击。 http://developer.android.com/reference/android/view/View.html#onKeyDown(int,android.view.KeyEvent) 检查用户是否在第二个视图中单击并显示您的第一个视图。如果它们位于第一个视图中,您可能希望在覆盖的方法上返回false以让系统处理该事件。 [可能关闭那个活动]
或者对于第二个选项,在某些情况下可能只是删除选项卡并使用选项菜单。这样您就可以正常方式使用您的活动。