【问题标题】:Override Android Back Button覆盖 Android 后退按钮
【发布时间】:2011-09-26 03:55:13
【问题描述】:

关于我为什么尝试这样做的一些信息:我正在使用 ActivityGroups 从 tabHost 活动中打开一个活动,并将该新活动保留在选项卡下。那部分我有。但是在那个新的活动中,如果我使用后退按钮,它会让我直接离开标签活动,所以我必须点击几次才能回到原来的位置。

有没有办法将后退按钮设置为转到特定活动而不是杀死当前活动窗口?

【问题讨论】:

标签: android android-activity back


【解决方案1】:

我相信你应该能够做这样的事情:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        // start new Activity here
    }
    return super.onKeyDown(keyCode, event);
}

但不建议覆盖后退按钮的预期功能。

【讨论】:

  • 我认为这是实现导航的好方法。只要视觉方法对用户是透明的,并且用户可以在到达 导航开始 时触发默认的后点击行为(也许通过双击 - 如果用户点击慢,你可以显示吐司提示)
【解决方案2】:

一般来说,我建议不要这样做,因为它会破坏用户体验。用户希望后退按钮杀死整个窗口,特别是因为您正在使用 tabhost。对用户来说,整个一堆(标签和所有)是他想要在点击后退按钮时退出的单个活动。

如果您还想这样做,请参考#onBackPressed()。当活动检测到用户按下返回键时调用它。默认是完成活动,但你可以让它做任何你想做的事情。我建议小心谨慎。

您可能会从here 中找到一些灵感。

【讨论】:

  • 我同意不想破坏用户体验。在考虑了更多之后,虽然它会很方便,甚至在我的情况下也有意义。我将不得不想出另一种来回的方法。