首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onKeyDown()问题

onKeyDown()问题
EN

Stack Overflow用户
提问于 2009-06-10 10:02:41
回答 8查看 53.3K关注 0票数 13

我想创建一个照片/视频捕获应用程序。

我已经创建了一个扩展SurfaceViewCaptureView类,并将其放在主窗体中。

main窗体的活动具有创建菜单的onCreateOptionsMenu()方法。菜单运行得很好,但随后我尝试实现了一个onKeyDown方法

代码语言:javascript
复制
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(event.getAction() == KeyEvent.ACTION_DOWN) {
        switch(keyCode) {
        case KeyEvent.KEYCODE_CAMERA:
            videoPreview.TakePicture();
            return true;
        }
    }

    return super.onKeyDown(keyCode, event);
}

菜单不再出现,并且该方法不能捕获onKeyDown事件。

有没有人知道这个问题的原因?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-09-13 14:02:09

我发现我为所有事件都返回了true,而我应该只为我正在使用的代码返回它。我将返回true移到了if语句的作用域内,并返回了false,否则将返回菜单!

代码语言:javascript
复制
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        dba.close();
        Intent result = new Intent("Complete");
        setResult(Activity.RESULT_OK, result);
        finish();
        return true;
    }
    return false;
}
票数 12
EN

Stack Overflow用户

发布于 2009-11-30 18:15:17

我遇到了类似的问题,并通过添加

代码语言:javascript
复制
this.requestFocus();
this.setFocusableInTouchMode(true);

在我的SurfaceView子类的构造函数中。

票数 14
EN

Stack Overflow用户

发布于 2010-06-15 22:42:41

我解决了删除if语句的问题,如下所示:

代码语言:javascript
复制
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch(keyCode)
    {
        case KeyEvent.KEYCODE_CAMERA:
            videoPreview.TakePicture();
            return true;
    }
    return super.onKeyDown(keyCode, event);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/974680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档