Android返回同样的活动完成旧的

时间:2014-07-22 14:31:02

标签: android

您好我有一个列表活动从互联网和搜索活动中获取数据。 当用户按搜索按钮时,搜索活动开始并从用户获取过滤器。然后当用户按下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)

在调用新活动时,我如何强制关闭之前的活动?

我试过启动模式,没有历史真实。

5 个答案:

答案 0 :(得分:1)

当您调用新活动时,请完成当前的活动:

finish();

另请阅读:Android LifeCycle

答案 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);
}