Есть ли возможность переключаться на определенный элемент моего графического интерфейса в приложении для Android после нажатия клавиши Enter на аппаратной клавиатуре? - PullRequest
0 голосов
/ 05 июня 2019

Я использую клавишу ввода на моей аппаратной клавиатуре, чтобы щелкнуть по кнопке в представлении моего приложения для Android.Когда я нажимаю клавишу ввода в первый раз, когда я только что запустил приложение, кнопка нажимается, и это то, что мне нужно.Но когда я снова нажимаю клавишу ввода после этого, нажимается какой-то другой графический элемент в представлении, а не моя кнопка.Так что мне просто нужно, чтобы при нажатии клавиши ввода несколько раз всегда нажималась только кнопка ... Как я могу это сделать?

Это мой код:

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {

        switch (keyCode) {
            case KeyEvent.KEYCODE_ENTER:

                long downTime = SystemClock.uptimeMillis();
                long eventTime = SystemClock.uptimeMillis() + 100;
                int[] coordinates = new int[2];
                v.getLocationOnScreen(coordinates);
                int x = coordinates[0];
                int y = coordinates[1];
                int metaState = 0;
                MotionEvent motionEvent = MotionEvent.obtain(downTime,
                                                             eventTime,
                                                             MotionEvent.ACTION_DOWN,
                                                             x,
                                                             y,
                                                             metaState
                );

                //v.dispatchTouchEvent(motionEvent);
                //button.setSelected(true);
                //v.setSelected(true);
                // doSomething();

                v.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View view, MotionEvent motionEvent) {


                        return false;
                    }
                });


                boolean b = v.dispatchTouchEvent(motionEvent);
                Toast.makeText(getApplicationContext(), Boolean.toString(b), Toast.LENGTH_LONG).show();
                //v.onTouchEvent(motionEvent);

                return true;

            case KeyEvent.KEYCODE_VOLUME_UP:
                //doSomething();
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }

Некоторые инструкции закомментированы, потому что я тестирую ...

Между тем я заметил, что это работает хорошо, когда я касаюсь ImageView, касаясь сенсорного экрана смартфона прямо между каждым нажатием клавиши ввода ...

...