android OnOptions菜单已关闭,未调用子菜单

android OnOptions菜单已关闭,未调用子菜单,android,submenu,Android,Submenu,我希望能够在用户退出选项菜单时自动取消暂停我的应用程序。(当然,除非他们选择了暂停…) 在顶级菜单中处理选项菜单关闭可以,但在子菜单中不调用。较高级别的onPanelClosed似乎也没有被调用 我可以检测他们何时进入菜单以及是否进行了选择,但不能检测他们是否只是点击菜单按钮退出 我可以重写整个子菜单以使用对话框,但如果可以避免的话,我宁愿不要 有人有什么建议吗?当检测到菜单按钮时,您可以覆盖onKeyDown并自己实现菜单。您可以覆盖onKeyDown,设置一个标志以检查菜单是否显示,然后返回

我希望能够在用户退出选项菜单时自动取消暂停我的应用程序。(当然,除非他们选择了暂停…)

在顶级菜单中处理选项菜单关闭可以,但在子菜单中不调用。较高级别的
onPanelClosed
似乎也没有被调用

我可以检测他们何时进入菜单以及是否进行了选择,但不能检测他们是否只是点击菜单按钮退出

我可以重写整个子菜单以使用对话框,但如果可以避免的话,我宁愿不要


有人有什么建议吗?

当检测到菜单按钮时,您可以覆盖onKeyDown并自己实现菜单。

您可以覆盖onKeyDown,设置一个标志以检查菜单是否显示,然后返回super.onKeyDown(键码,事件)

您可以在每次按下键时检查屏幕上是否有菜单。请记住,其他按钮(后退、搜索、主页和触摸屏幕的其他部分)会关闭菜单。使用其他按钮,您可以处理菜单,但主页按钮和手指点击无法覆盖

如果我是你,我会忘记@override on onkeydown选项


但是你可以有6个菜单按钮,第6个称为“更多”,这可以创建一个自定义对话框,其中包含更多选项,你可以处理这些选项

这当然是一个选项,但实际上不需要绕过整个菜单系统来实现这一点。(而且可能有点冒险,因为这显然不是安卓的设计师们期望你做的)我不明白为什么不,否则你怎么能有一个高度风格化的菜单?我认为这是最好的方式,尤其是在比赛中。当你检测到菜单被按下时,你甚至可以在透明的深色背景下启动一个新的“结果”活动。请注意,你只需点击屏幕上的任何地方就可以退出菜单,你不必再次点击菜单按钮,因此这并不适用于所有情况。Mayra你必须自己处理该逻辑。如果你使用我在上面的评论中提到的活动覆盖方法,当在该活动中按下菜单时,你只需调用finish。好的,但是10次中有9次,实现你自己的菜单是错误的。如果你有一些高度风格化的应用程序,比如游戏,这可能没问题,但一般Android用户都希望菜单按钮有特定的行为方式,如果你做了一些不同的事情,你只会把他们弄糊涂。这听起来像是安卓的bug。请参阅[bug report][1]。谢谢Maya,我刚刚查看了android bug列表,有一个打开的bug report-#2746。因为它从2009年8月开始开放,我不会屏住呼吸等待修复…使用ActionBar.OnMenuVisibilityListener。请查看我的答案,以了解类似的问题