openOptionsMenu 不适用于 minSdkVersion 16 的棒棒糖平板电脑

openOptionsMenu doesn't work on Lollipop Tablet with minSdkVersion 16

我搜索了 Stack Overflow,但没有 link 完全相同的问题。

我正在开发的应用是旧版应用。 此应用程序必须在点击图像图标时打开选项菜单。 该应用程序不使用操作栏。 在我将它的 minSdkVersion 提高到 16 form 8 之前,此功能在所有设备上都运行良好。 由于我将 minSdkVersion 提高到 16,选项菜单在 Lollipop 平板电脑上无法打开。不过它在 Lollipop 智能手机上运行良好。

这里有什么问题?有什么解决方法吗?

始终 为您的项目定义 targetSdkVersion。这告诉 Android "hey, I was thinking of this API level when I wrote this code"。 Android 将使用它来实现向前兼容性的选择性位,更改较新设备上的运行时行为,使其更接近您当时的想法。

平板电脑从未真正使用过选项菜单;从 Android 3.0 开始,以前的选项菜单被迁移到操作栏。在没有 targetSdkVersion 的情况下,显然 Android 会将 minSdkVersion 也视为 targetSdkVersion。并且,minSdkVersion/targetSdkVersion 为 16,您将坚定地进入动作条世界。

将您的 targetSdkVersion 设置为 8 应该会恢复您的 minSdkVersion 跳转到 16 时应用的任何更改。

但是,最终某些事情会迫使您的手将 targetSdkVersion 提高到更高的值。不要假设您将能够永远坚持 targetSdkVersion 8。或者:

  • 将您的用户迁移到操作栏,或者
  • 实现您自己的类似选项菜单,或者
  • 计划用现代实现替换整个应用程序,或者
  • 计划放弃该应用程序