Подтвердить что ты не робот

Почему onKey() называется дважды?

Я использую этот код:

public boolean onKey(View v, int keyCode, KeyEvent event) {
msg = (EditText)findViewById(R.id.msg);
String message = msg.getText().toString();
            if(keyCode == 66)
            {
                //It hitting here twice.          
            }
            return false;
        };

Может кто-нибудь скажет мне, почему он дважды нажимает, когда я нажимаю кнопку ввода?

4b9b3361

Ответ 1

OnKey запускается дважды: первый раз для нажатия клавиши, а второй раз для активации ключа, поэтому вам нужно отфильтровать:

YOUR_VIEW.setOnKeyListener(new OnKeyListener()
        {                           
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                //This is the filter
                if (event.getAction()!=KeyEvent.ACTION_DOWN)
                    return true;

                switch (keyCode) {
                case KeyEvent.KEYCODE_1 : 
                    MakeToast(1);
                    break;
                case KeyEvent.KEYCODE_2 : 
                    MakeToast(2);
                    break;
                case KeyEvent.KEYCODE_3 : 
                    MakeToast(3);
                    break;

                }

                return true;
            }

        });