【问题标题】:In Android P: Dropping event due to no window focus: KeyEvent在 Android P 中:由于没有窗口焦点而丢弃事件:KeyEvent
【发布时间】:2019-12-13 05:41:29
【问题描述】:

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(); 应用程序开始工作得稍微好一点,但有时仍会观察到警告,感觉就像系统为用户挂起一样。查看以下代码 sn-p 了解详情:

@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 中遇到了相同类型的问题,但不是正确的解决方案,因此发布问题并等待所有类型的建议和答案。 提前致谢。

【问题讨论】:

  • 您能找到解决此问题的有效解决方案吗?请在此处发布。
  • @user846316,还是没有

标签: android android-studio popupmenu


【解决方案1】:

在我的情况下,类似的问题是由在任何地方使用 onKeyDown() 和 KeyEvent.ACTION_DOWN 引起的,包括在按键上显示对话框时。 使用 onKeyUp() 和 KeyEvent.ACTION_UP 显示对话框和活动为我解决了这个问题。

【讨论】:

    【解决方案2】:

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

    我通过View.post() 解决了这个问题:

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

    希望能帮到你

    【讨论】:

    • 似乎什么也没做
    • 它对我们没有帮助
    • 我猜王的意思是把“requestFocus()”调用放在那里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多