【问题标题】:Android context button blocks back button functionalityAndroid上下文按钮阻止后退按钮功能
【发布时间】:2015-09-29 15:43:09
【问题描述】:

我的所有活动都有问题,当我按下后退按钮时它可以正常工作,但是当我之前按下上下文菜单按钮时,当我按下后退时没有任何反应。 我说的是电话按钮,而不是用于返回导航的工具栏图标。有没有人处理过这个问题?

编辑: 没有菜单显示,onPrepareOptionsMenu() 被删除,当我按下返回时手机会振动但没有动作。 我看到,如果我为菜单充气,它会在关闭弹出窗口的第一个返回后正常工作。

我发现只有当我使用 setSupportActionBar(toolbar); 设置工具栏时才会发生这种情况

【问题讨论】:

  • 有弹出的上下文菜单吗?如果是这样,后退按钮会关闭上下文菜单,这是正常行为。如果您没有看到上下文菜单,可能您仍然定义了一个空的上下文菜单。
  • OnPrepareOptionsMenu() 被删除,我试图返回 false 但没有运气。你有什么建议?没有弹出式节目,我可以随心所欲地反击,它什么都不做。
  • 你覆盖 onBackPressed() 吗?
  • onBackPressed() 未被覆盖

标签: android navigation contextmenu back


【解决方案1】:

我几乎有同样的问题,这是我的情况:

  • AppCompatActivity 工具栏设置为 setSupportActionBar(toolbar);
  • 我正在使用导航抽屉(不知道这是否会影响)
  • onBackPressed() 被覆盖以提示注销对话框

一切正常,直到我按下设备菜单按钮,然后应用程序开始忽略后退按钮。

这是我按下设备菜单按钮后看到的

  • 在此之后不会调用 onBackPressed() 方法
  • 如果设置了onKeyUp(int keyCode, KeyEvent event),则接收事件(可以检查de keyCode是否与KeyEvent.KEYCODE_BACK相同)

我不知道为什么 onBackPressed 停止被调用,尝试不覆盖 onBackPressed 和 onKeyUp 并且问题仍然相同。

我知道这不是最好的解决方案,但为了解决这个问题,我正在使用下一个代码:

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode==KeyEvent.KEYCODE_BACK){
                onBackPressed();
                return true;
        }
        return super.onKeyUp(keyCode, event);
    }

希望这会有所帮助。

【讨论】:

  • 酷,我正在尝试调度键事件,但没有相应地工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多