onKeyUp在子视图中不起作用

时间:2012-07-01 09:27:22

标签: android onkeyup android-2.3-gingerbread

我有这种观点的层次结构: 活动 - > 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);
        }
    }

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

1 个答案:

答案 0 :(得分:2)

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

当活动检测到用户按下后退键时调用。默认实现只是完成当前活动,但您可以覆盖它以执行任何操作。

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

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

public @Override void onBackPressed()
{
    if (doSomeThingOnBackPressed) {
        // do some stuff
        return;
    }
    super.onBackPressed();
}