在Android P中:由于没有窗口焦点而发生了dropping事件:KeyEvent

时间:2019-02-15 05:09:23

标签: android android-studio popupmenu

Android P中,启动时应用程序无法正常运行,并抛出警告:

 W/ViewRootImpl: 
    Dropping event due to no window focus: MotionEvent { action=ACTION_DOWN, KeyCode = DPAD_DOWN} 

W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_UP, KeyCode = DPAD_DOWN} and its not allowing any action to performed.

查看图片以获取详细警告。

注意:同一应用程序在Android O中可以正常工作,但是在Android P中,有时PopupMenu项中缺少焦点,并且没有找回焦点直到重新引导系统。使用后     dispatchKeyEvent并在v.requestFocus();时动态地将焦点设置为视图,但应用程序开始工作的情况略有改善,但有时仍会观察到警告,感觉就像用户挂了系统。检查下面的代码片段以获取详细信息:

@Override
        public boolean dispatchKeyEvent(KeyEvent event) {
            LogUtils.d(TAG, String.valueOf(event.getKeyCode()));
            this.getWindow().getDecorView().setFocusable(true);
            return super.dispatchKeyEvent(event);
        }

我的问题是,如何动态地将丢失的焦点设置为 PopupMenuRecyclerView,或者如何在运行于Android P的应用程序中克服这一点。

请提出建议,我在stackOverflow中遇到了相同的问题,但没有适当的解决方案,因此请发布问题并等待所有类型的建议和答案。 预先感谢。enter image description here

2 个答案:

答案 0 :(得分:0)

在显示PopupWindow时,我在android p上也遇到了同样的问题

我解决了,但是像这样View.post()

getView().post(new Runnable()
{
    @Override
    public void run()
    {
        // show popup window
    }
});

希望可以帮助您

答案 1 :(得分:0)

在我的情况下,类似的问题是由在各处使用onKeyDown()和KeyEvent.ACTION_DOWN引起的,包括在按键时显示对话框时。 使用onKeyUp()和KeyEvent.ACTION_UP来显示对话框和活动可以为我解决该问题。