0

我有这个视图层次结构:Activity -> ViewPager -> MyViewGroup

在 MyViewGroup (并且只有那里)我覆盖 onKeyUp 事件:

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.i(TAG, "Back");
            return true;
        } else {
            return super.onKeyUp(keyCode, event);
        }
    }

但是当我按“返回”键时,不会调用此覆盖并且应用程序已关闭。为什么?

4

1 回答 1

2

默认情况下,后退按钮完成活动。来自安卓源:

当活动检测到用户按下返回键时调用。默认实现只是完成当前活动,但您可以覆盖它来做任何您想做的事情。

public void onBackPressed() {
    if (!mFragments.popBackStackImmediate()) {
        finish();
    }
}

如果您希望更改此行为,则必须在 Activity 中覆盖 onBackPressed 并使其不调用 super。然后你可以实现你自己的行为。

public @Override void onBackPressed()
{
    if (doSomeThingOnBackPressed) {
        // do some stuff
        return;
    }
    super.onBackPressed();
}
于 2012-07-01T09:33:11.513 回答