如何找到在Android中按下的键?

时间:2012-08-10 01:55:30

标签: android android-softkeyboard keylistener

我想知道哪个键被按下了。我有一个EditText,我为它添加了一个KeyListener。但它似乎没有工作。我有一个textview,我想在textview上按下setText。

edittext = (EditText)findViewById(bla);
textview = (TextView)findViewById(bla);
edittext.setKeyListener(new Keylistener(){
@Override
                    public void clearMetaKeyState(View view,
                            Editable content, int states)    {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public int getInputType() {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public boolean onKeyDown(View view, Editable text,
                            int keyCode, KeyEvent event) {

                        if(keyCode==KeyEvent.KEYCODE_DEL){
                            textview.setText("delete");
                        }
                        // TODO Auto-generated method stub
                        return false;
                    }

                    @Override
                    public boolean onKeyOther(View view, Editable text,
                            KeyEvent event) {
                        // TODO Auto-generated method stub
                        return false;
                    }

                    @Override
                    public boolean onKeyUp(View view, Editable text,
                            int keyCode, KeyEvent event) {
                        if(keyCode==KeyEvent.KEYCODE_DEL){
                            textview.setText("delete");
                        }
                        return false;
                    }

 });

这应该是致命的简单,但我不能让它工作:)

1 个答案:

答案 0 :(得分:1)

试试这个。这个适用于我的项目。

    editext.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if( (event.getAction() == KeyEvent.ACTION_DOWN) && 
                    (keyCode == KeyEvent.KEYCODE_DEL) ){
                Log.d(TAG, "Delete key clicked !");

                return true;
            }
            return false;
        }
    });

如果这不起作用,您可能正在侦听错误的EditText。检查你的findViewById,看看你的id是否正确。