【问题标题】:openOptionsMenu doesn't work on Lollipop Tablet with minSdkVersion 16openOptionsMenu 不适用于具有 minSdkVersion 16 的 Lollipop 平板电脑
【发布时间】:2017-03-20 21:17:03
【问题描述】:

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

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

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

【问题讨论】:

  • 你的targetSdkVersion是什么?
  • 我没有设置。仅将 minSdkVersion 设置为 16。如果我将其回滚到 10,它也可以工作,但如果我将其设置为超过 10,它将无法工作。
  • “我没有设置它”——这毫无意义。将其设置为 8 看看是否有帮助。
  • 将 minSdkVersion 移动到 10 或更低对我有用。我可以保留 minSdkVersion='16' 并设置 targetSdkVersion='8' 吗?这会破坏应用程序中的任何其他功能吗?我会尝试并更新你。
  • "我可以保留 minSdkVersion='16' 并设置 targetSdkVersion='8' 吗?" ——这就是我建议你尝试的。 “这会破坏应用程序中的任何其他功能吗?” -- 我不这么认为,但你需要彻底测试。

标签: android android-5.0-lollipop tablet android-optionsmenu


【解决方案1】:

总是为您的项目定义一个targetSdkVersion。这告诉 Android “嘿,我在编写这段代码时正在考虑这个 API 级别”。 Android 将使用它来进行选择性的前向兼容性,将新设备上的运行时行为更改为更接近您当时的想法。

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

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

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

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

【讨论】:

  • 再次,很好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多