【发布时间】:2010-04-05 17:28:30
【问题描述】:
在我的应用程序中,我有几个活动,主屏幕有 4 个按钮,每个按钮启动一个不同的活动。因此,其中之一是搜索活动,一旦搜索,它就会向您显示结果活动。这个结果活动可以从其他活动中获得,所以通常是这样的:
Main activity -> Search activity -> Result activity
Main acitivty -> someother activity -> Result activity
现在,如果我已达到此结果活动并按一次或两次返回,然后按 Home 键,它将显示主屏幕。但是,如果我想通过按住 Home 按钮并单击我的应用程序来返回我的应用程序,它将始终返回到 Result 活动,无论哪个活动是我使用的最后一个活动。如果我再次按下返回,它将带我回到主屏幕。
如果我再试一次,它会再次将我带到结果活动。避免这种情况的唯一方法是通过单击应用程序的图标来启动应用程序。这会将我带到我正在使用的最后一个活动并且它会记住状态,因此如果我再次按下它不会将我带到主屏幕,而是将我带到它之前的活动。为了说明这一点:
Main activity -> Search activity -> result activity --back--> Search activity --Home Button--> Home Screen --Hold Home and select the app --> Result activity --back--> Home Screen
--Click application icon--> Search activity --back--> Main activity
发生的另一件事是,如果我在 Result 活动上按下 Home 按钮,并通过单击图标启动应用程序,它会将我带到 Result 之前的活动。
为什么会这样?有什么解决方法吗?
【问题讨论】:
-
你是如何开始你的活动的?您在 Intent 中使用的任何特定标志?
-
是的,我正在添加一个标志来启动 Result 活动,并且我也传递了一些数据。像这样的东西: Intent intent = new Intent(this, Result.class); intent.putExtra("结果", aString);意图.addFlags(R.id.flag_search);开始活动(意图);
-
调查它,intent.addFlags(R.id.flag_search) 通过注释掉该行或使用任何 int 而不是 R.id.flag_search 解决了这个问题。嗯,现在为什么我不能在那里存储我的标志?我应该使用静态类来存储不同的标志吗?
-
忽略我的最后一个问题(我无法编辑它),我现在知道我不应该为此使用 addFlags。