相关疑难解决方法(0)

DispatchKeyEvent侦听正在按下的空格键

我正在开发一个Android项目,我需要检查空格键何时被按下sos我可以执行某个功能.

问题是,它正在模拟器上工作,但不在我的实际设备上.我想这可能是因为我的模拟器使用的是物理键盘,而不是屏幕上的虚拟键盘,但在实际设备上进行测试时,它使用的是虚拟键盘.

我正在尝试调度keyevent

@Override
    public boolean dispatchKeyEvent(KeyEvent event)
    {

        if (event.getKeyCode() == KeyEvent.KEYCODE_SPACE
                && event.getAction() == KeyEvent.ACTION_UP)
        {
            QueryEditor queryEditor = (QueryEditor)getSupportFragmentManager().findFragmentById(R.id.fragment_queryEditor);
            queryEditor.formatQueryText();
            return true;
        }
        }
Run Code Online (Sandbox Code Playgroud)

我也试过按键

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            disconnectDatabase();
        }
        else if (keyCode == KeyEvent.KEYCODE_DEL)
        {
            QueryEditor queryEditor = (QueryEditor)getSupportFragmentManager().findFragmentById(R.id.fragment_queryEditor);
            queryEditor.formatQueryText();
        }

        return super.onKeyDown(keyCode, event);
    }
Run Code Online (Sandbox Code Playgroud)

除非按下后退按钮但我需要空格键来触发事件,否则这些都不会被触发.

感谢您的任何帮助,您可以提供.

UPDATE

下面是我如何创建QueryEditor Fragment并创建事件处理程序的代码

@Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);

        iQueryEditor = (IQueryEditor)this;
        iErrorHandler = (IErrorHandler)this;

        txtQueryEditor = (EditText)getActivity().findViewById(R.id.query_txtQueryEditor); …
Run Code Online (Sandbox Code Playgroud)

android

5
推荐指数
2
解决办法
8578
查看次数

标签 统计

android ×1