Диспетчер оконного диспетчера dispatchKeyEvent () не работает, когда пользователь нажимает кнопку home или меню - PullRequest
0 голосов
/ 29 августа 2018

проблема: , когда пользователь нажимает клавишу home или меню со своего устройства, тогда dispatchKeyEvent () не срабатывает, но когда пользователь нажимает кнопку назад со своего устройства, вызывается метод dispatchKeyEvent ().

вот мой фрагмент кода:

 viewHolder = new RelativeLayout(context) {
        @Override
            public boolean dispatchKeyEvent(KeyEvent event) {
            Log.e(TAG, "dispatchKeyEvent: ");
            if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == 0) {
                Log.e(TAG, "dispatchKeyEvent: KEYCODE_BACK");
                if (viewHolder != null) {
                    if (viewHolder.getWindowToken() != null) {
                        mWindowManager.removeView(viewHolder);
                        mOverlayView.setVisibility(VISIBLE);
                    } else {
                        return super.dispatchKeyEvent(event);
                    }
                }
            }

            if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
                Log.e(TAG, "dispatchKeyEvent: KEYCODE_HOME");
                if (viewHolder != null) {
                    if (viewHolder.getWindowToken() != null) {
                        mWindowManager.removeView(viewHolder);
                        mOverlayView.setVisibility(VISIBLE);
                    } else {
                        return super.dispatchKeyEvent(event);
                    }
                }
            }

            if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
                Log.e(TAG, "dispatchKeyEvent: KEYCODE_MENU");
                if (viewHolder != null) {
                    if (viewHolder.getWindowToken() != null) {
                        mWindowManager.removeView(viewHolder);
                        mOverlayView.setVisibility(VISIBLE);
                    } else {
                        return super.dispatchKeyEvent(event);
                    }
                }
            }
            return super.dispatchKeyEvent(event);
        }
    };

здесь viewHolder - это относительное расположение, которое добавляется в диспетчер окон.

теперь я хочу удалить вид из оконного менеджера, когда пользователь нажимает кнопку home, menu и back на устройстве

когда пользователь нажимает кнопку «назад», этот метод срабатывает хорошо, а относительное отклонение удаляется из оконного менеджера, но при нажатии клавиши home, меню с его устройства, этот метод не вызывается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...