Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Android触发onKey事件时出现问题_Java_Android_Key_Listener - Fatal编程技术网

Java 使用Android触发onKey事件时出现问题

Java 使用Android触发onKey事件时出现问题,java,android,key,listener,Java,Android,Key,Listener,我很难触发主视图的onKey事件。我不确定我做错了什么,我已经正确地实现了onClick事件,但似乎无法理解onKey事件 以下是相关代码: public class MyActivity extends Activity { private RelativeLayout main; private ApplicationToolbar toolbar; public void onCreate(Bundle savedInstanceState) {

我很难触发主视图的onKey事件。我不确定我做错了什么,我已经正确地实现了onClick事件,但似乎无法理解onKey事件

以下是相关代码:

public class MyActivity extends Activity {
    private RelativeLayout main;
    private ApplicationToolbar toolbar;

    public void onCreate(Bundle savedInstanceState) {
        ...
        this.main = (RelativeLayout) this.findViewById(R.id.main);
        this.toolbar = new ApplicationToolbar(this);

        //  toolbar is added to main later on in the code...

        this.main.setOnClickListener(mClickListener);
        this.main.setOnKeyListener(mKeyListener);
    }

    private OnClickListener mClickListener = new OnClickListener() {
        public void onClick(View v) {
            toolbar.setVisibility(View.VISIBLE);    // Works correctly.
        }
    };

    private OnKeyListener mKeyListener = new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            toolbar.setBackgroundColor(0xFF0000FF);    //  Does not work.
            return true;
        }
    };
}

事实上,无论我在mKeyListener中输入了什么代码,它都不会执行,这让我相信事件本身永远不会被触发,即使我在物理键盘上按了一串键(Motorola Droid,Android 2.1)。

你可以尝试覆盖
onKeyDown(int-keyCode,KeyEvent-event)

检查:


您可以尝试覆盖
onKeyDown(int-keyCode,KeyEvent事件)

检查:


谢谢,覆盖onKeyDown事件是有效的,对于我的情况来说,这是一个可行的解决方法。你知道为什么我上面的方法不能正常工作吗?@celestialorb:当你按下一个键时,也许你没有任何
RelativeLayout
的子
onFocus
。尝试在内部添加一个
EditText
。谢谢,覆盖onKeyDown事件是有效的,对于我的情况来说,这是一个可行的解决方法。你知道为什么我上面的方法不能正常工作吗?@celestialorb:当你按下一个键时,也许你没有任何
RelativeLayout
的子
onFocus
。尝试在内部添加
EditText