您好我有一个列表活动从互联网和搜索活动中获取数据。 当用户按搜索按钮时,搜索活动开始并从用户获取过滤器。然后当用户按下go按钮main(列表)活动开始并且搜索活动结束。主要活动显示搜索结果。
问题是当用户按下电话上的后退按钮时,搜索结果活动消失并显示旧列表。
A --> B --> A (B is finished)
A --> A (this is activity stack, lets make another search)
A --> A --> B --> A (b is finished)
A --> A --> A (ovvv noo)
在调用新活动时,我如何强制关闭之前的活动?
我试过启动模式,没有历史真实。
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为您正在寻找的是Intent标志,我认为您感兴趣的是:FLAG_ACTIVITY_CLEAR_TOP(http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP)
final Intent i = new Intent(this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
如果有效,请告诉我。
答案 2 :(得分:1)
你可以使用 android:launchMode =" singleTop" 为你的" A"活动。请注意,在这种情况下,{&#34}会在您的" A"活动和您的活动应根据您的需要做出适当的反应。
答案 3 :(得分:1)
您可以使用 android:launchMode="singleTask"
结论 -
A --> B (B is finished)
A (this is activity stack, lets make another search)
A --> B (b is finished)
A (ovvv yes)
您永远不会有其他活动A或B的实例。
<强> singleTask 强>
系统在新任务和路由的根目录下创建活动 意图。但是,如果活动的实例已经存在 存在,系统通过a将意图路由到现有实例 调用它的onNewIntent()方法,而不是创建一个新方法。
参考:http://developer.android.com/guide/topics/manifest/activity-element.html
答案 4 :(得分:0)
不确定我理解你想要什么,但是你可以选择用“后退按钮”来做某事,而不是完成你的活动
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
&& !event.isCanceled()) {
// TODO what you want
Intent intent = new Intent(ChoixPiecesJustificativesActivity.this,
MainActivity.class);
startActivity(intent);
return true;
}
return super.onKeyUp(keyCode, event);
}