我看到了一些关于在不同的Android版本上无法使用openOptionsMenu()的问题的报告,例如:
简而言之,如果您的活动扩展了Activity,则使用较新版本的appcompat-v7时,在调用openOptionsMenu()时菜单将正常显示,但如果您扩展了ActionBarActivity或AppCompatActivity(即使用兼容性库),则不起作用。在旧版本的appcompat-v7中,它可以正常工作。
它是可重现的,如下所示:
在不同版本的Android上使用openOptionsMenu()
但是,我遇到的问题似乎与所使用的appcompat-v7支持库的版本有关。简而言之,如果您的活动扩展了Activity,则使用较新版本的appcompat-v7时,在调用openOptionsMenu()时菜单将正常显示,但如果您扩展了ActionBarActivity或AppCompatActivity(即使用兼容性库),则不起作用。在旧版本的appcompat-v7中,它可以正常工作。
它是可重现的,如下所示:
- 在Android Studio中导入样例“ActionBarCompat-Basic”
- 向屏幕添加一个按钮,调用openOptionsMenu()
- 请注意,由于示例中使用的是旧版本的库appcompat-v7:21.0.3,因此这很好用
- 更改依赖项以使用appcompat-v7:23.0.1,重新构建,单击按钮时菜单将不会出现。
- 将主活动更改为扩展Activity(即无应用程序兼容性)-它可以工作
- 将主活动更改为扩展AppCompatActivity(即使用应用程序兼容库)-它失败了
经过一些测试,我发现这在appcompat-v7:22.1.0中停止工作,并且在此jar的任何更新版本中都将不再起作用。
这种行为在模拟器和物理设备上相同,在我测试过的Android版本5.1.1(23)和2.1(7)上也是如此。
我已经在这个bug上添加了评论:Android issue tracker bug
任何建议、想法或解决方法都将不胜感激! -Steve