【问题标题】:onKeyUp doesn't work in child viewonKeyUp 在子视图中不起作用
【发布时间】:2012-07-01 09:27:22
【问题描述】:

我有这个视图层次结构: 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);
        }
    }

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

【问题讨论】:

    标签: android onkeyup android-2.3-gingerbread


    【解决方案1】:

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

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

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

    如果你想改变这种行为,你必须在你的 Activity 中重写 onBackPressed 并让它不调用 super。然后你就可以实现你自己的行为了。

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

    【讨论】:

    • 那么,我不能在ViewGroup中处理,只能在Activity中处理?
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多