0

我有 2 个活动。一项活动通过 Web 服务询问外部数据库,并在另一项活动中显示结果。我想要的是,当我按下后退硬件键时,我应该回到第一个活动,当我做另一个请求时,第二个活动重新开始。这是我正在使用的 onBackPressed() 方法的代码,但它不起作用!我回到第一个正确的活动,但是当我做另一个请求时,第二个活动从我第一次离开的地方开始。例如,我在第二个活动的底部有页码,如果我从第 3 页按下后退硬件按钮并执行另一个请求,我的第二个活动将从第 3 页重新启动所有数据。我做错了什么。我是在 android 生命周期中做错了什么,还是(因为我使用单例类向 webservice/db 发出请求)我在使用单例时犯了错误?我认为我的错误更多是在生命周期的第一点。任何帮助,将不胜感激。谢谢!

@Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();       
        Intent intent = new Intent(this, pluto.class);
        startActivity(intent);
    }
4

3 回答 3

1

android 中的默认 backpress 会从堆栈中删除当前活动并将前一个活动置于顶部。(这就是您要查找的内容)。

我不明白您为什么首先要覆盖它以及创建活动的新实例的原因

Intent intent = new Intent(this, pluto.class);     
startActivity(intent)

尝试一起评论这个方法,看看它是否有效。

编辑 1

任务和回栈链接

于 2012-04-05T09:55:32.307 回答
0

实际上,您在调用 onBackPressed() 方法中的另一个之前完成了当前活动。因此,如果您想完成您的工作,只需删除 finish(); 命令并在该活动的 onPause() 中调用它。

于 2012-04-05T10:28:11.913 回答
0

如果您正在寻找一种方法来在您按下返回时重置第二个活动,您应该在 onBackPressed 方法中手动执行此操作。此外,在 Android 中使用 singelton 可能会有点混乱,因为您无法完全控制活动何时被销毁。你确定你需要使用它吗?Android 会自动进行状态保存。正如 Devastating 所说,您不需要在按下返回时手动启动活动一。

于 2012-04-05T10:05:39.117 回答