1. ホーム
  2. android

[解決済み] なぜonKey()は2回呼ばれるのですか?

2023-03-18 12:35:45

疑問点

このコードを使っています。

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

エンターキーを押すと2回ヒットするのはなぜか、どなたか教えてください。

どのように解決するのですか?

OnKeyはキーダウンのときとキーアップのときの2回発生するので、フィルタリングする必要があります。

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;
            }

        });